对于复杂难以解析的网站请求爬取办法
使用selenium 打开网页进行模拟
selenium 是一个自动化工具,提供了一套API供给python这类语言调用控制浏览器的功能,其中包含最基础的点击,前进后退等浏览器基本功能,还包含可以直接运行Js在浏览器上,实现各类复杂效果。
selenium环境安装
安装selenium 包含两部分,一部分是python需要下载selenium包,另一部分是下载浏览器驱动。
python 下包
1 |
|
下载驱动以及安装驱动
下载地址 http://chromedriver.storage.googleapis.com/index.html
在浏览器设置关于Chrome查看谷歌浏览器版本,随后下载对应的驱动即可。
将该驱动放置在环境变量里即可,如果没有放那么在使用的时候需要指定位置。
1 |
|
基础请求
driver.get(url)
配置信息设置
- 使用无头模式,即不打开浏览器进行请求
options.headless = True
- 添加UA
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
- 添加Cookie
driver.add_cookie({"name":key,"value":result[key]})
需要注意,设置cookie要在请求后才能设置。
操作模拟
- 通过find_element获取到单个元素执行click
driver.find_element(By.CSS_SELECTOR,".Modal-closeButton").click()
- 通过find_elements 可获取多个元素 `driver.find_elements(By.CSS_SELECTOR,”.Modal-closeButton”)
模拟人滚轮移动
思路:可以通过使用dom获取到当前位置,并记录下来,每次滚动一定距离后,下一次以记录的值再进行滚动,直到当前记录的位置值不再变化,代表着滚动到底部了。
1 |
|