首页 > 编程语言 > 详细

python | 爬虫笔记(七)- 动态渲染页面抓取Selenium

时间:2018-09-28 11:40:06      阅读:201      评论:0      收藏:0      [点我收藏+]
JavaScript 动态渲染的页面不止 Ajax 这一种
另外有的ajax渲染接口含有很多加密参数,难以直接找出其规律
通过模拟浏览器运行的方式来实现,Selenium、Splash、PyV8、Ghost 等

7.1 Selenium的使用

自动化测试工具,支持多种浏览器。爬虫中主要用来解决js渲染问题
用 Selenium 来驱动浏览器加载网页的话,可以直接拿到JavaScript 渲染的结果了,加密不用再担心。
1- 声明浏览器对象
browser = webdriver.Chrome()
2- 访问页面
browser.get(https://www.taobao.com)
3- 查找节点
input_first = browser.find_element(By.ID, q) #单个节点
lis = browser.find_elements_by_css_selector(.service-bd li)
4- 节点交互
...
 
5- 获取节点信息
通过 page_source 属性可以获取网页的源代码,获取源代码之后就可以使用解析库如正则、BeautifulSoup、PyQuery 等来提取信息了。
不过 Selenium 已经提供了选择节点的方法,返回WebElement 类型,可以通过相关方法或属性来解析
 
6- 获取属性
7- 切换frame
 
8- 延时等待
确保节点已经加载出来
- 隐式等待
当查找节点而节点并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是 0。 implicitly_wait() 
- 显式等待
指定好要查找的节点,然后指定一个最长等待时间。如果在规定时间内加载出来了这个节点,那就返回查找的节点,如果到了规定时间依然没有加载出该节点,则会抛出超时异常。
 

##本系列内容为《python3爬虫开发实战》学习笔记。本系列博客列表如下:

(零)学习路线

(一)开发环境配置

(二)爬虫基础

(三)基本库使用

(四)解析库使用

(五)数据存储

(六)Ajax数据爬取

(七)动态渲染页面爬取Selenium

持续更新...

对应代码请见:..

 

python | 爬虫笔记(七)- 动态渲染页面抓取Selenium

原文:https://www.cnblogs.com/geo-will/p/9717405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!