目录
动态网页数据抓取
AJAX:
异步javascript和XML。在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不加载网页的情况下,对网页进行更新。传统的网页要更新的话必须重载整个网页页面。
例如:
点击查看更多之后
又重新加载了10条数据,但是网页并没有更新
点击检查 Network之后,再次点击 查看更多 , 然后点击出现的第一条,会发现新出现的数据是通过”新的url”进行请求的然后加载到原来的页面。所以在原网页的网页源代码是找不到新加载的数据的。这就需要新思路解决问题。
我们可以直接分析ajax调用的接口,即“新的url”,通过代码请求接口。
如此案例:https://www.xfz.cn/api/website/articles/?p=2&n=20&type=
p=2指的是刷新了几次,n=20指的是刷新一次加载多少数据。
但是其他的接口不好分析,需要json先验知识。所以这个方法有局限性。
还有一种方法就是今天主推的方法。使用Selenium Chromedriver模拟浏览器行为获取数据。
安装Selenium和 Chromedriver
1.根据chrome://version/选择http://chromedriver.storage.googleapis.com/index.html
如:
2.下载Chromedriver
无论64位还是32位都可以
3.解压,放在任意英文目录下
4.下载Selenium
直接pip install Selenium
验证安装是否成功
from selenium import webdriver
driver_path=r"D:\Python_pycharm\PyCharm Community Edition 2018.3.5\chromedriver.exe"#你自己的解压路径
driver=webdriver.Chrome(executable_path=driver_path)
driver.get('https://www.baidu.com/')
print(driver.page_source)#可以看到源代码
会看到弹出:
源代码: