python抓取动态网页(爬虫抓取数据时有些数据是动态数据,js动态加载的)
优采云 发布时间: 2022-03-12 22:09python抓取动态网页(爬虫抓取数据时有些数据是动态数据,js动态加载的)
爬虫爬取数据时,有些数据是动态数据。比如用js动态加载。使用普通urllib2爬取数据时,找不到相关数据。这是爬虫初学者在使用过程中最容易出现的情况。,明明在浏览器中有对应的信息,但是python爬取的网页中却缺少对应的信息。这通常是因为网页使用js异步加载数据并动态显示。一种处理方法是找到对应的js接口,但有时这种情况非常少见,因为js的调用参数也要分析,有些参数是加解密的;另一种方式是调用python浏览器控制浏览器返回相应的信息,
安装硒
python下安装selenium,命令:
pip install -U selenium
测试成功:
#!/usr/bin/python
#coding=utf-8
"""
start python 项目
"""
from selenium import webdriver
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.baidu.com") # Load page
print browser.page_source
selenium虽然安装成功,但还是报错:
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
这是因为:
使用pip安装selenium,默认安装最新版本的selenium,使用pip list查看我的selenium版本,是3.4.2,firefox版本是43.0.1,selenium 3.x 启动,在 webdriver/firefox/webdriver.py 的 __init__ 中,executable_path="geckodriver"; 并且 2.x 是 executable_path="wires"
升级火狐到最新版本
下载地址:根据自己电脑,下载win64位;
在firefox安装目录下,解压geckodriver,然后将path添加到path环境变量中。
selenium 文档可以在下面进行研究。
使用 BeautifulSoup 进行 html 解析
如果对 BeautifulSoup 不了解,可以参考这个 文章 ex12.html
找到html后,可以使用BeautifulSoup进行解析。
from bs4 import BeautifulSoup
bs = BeautifulSoup(browser.page_source, "lxml")
更多教程:阿毛学编程