爬虫之Selenium 动态渲染页面爬取
Selenim 是一个自动化测试工具,可以利用它驱动浏览器执行特定的动作,如点击、下拉等操作,同时可以获取浏览器当前呈现的页面的源代码,做到可见及可爬
1.使用流程
1)声明浏览器对象
Selenium 支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端浏览器。
2)访问页面
可以通过get()方法来请求网页,参数传入链接URL即可。
3)查找节点
Selenium 可以驱动浏览器完成各种操作,比如填充表单、模拟点击等。
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
如要获取多个节点,element改为elements
方法
4)节点交互
Selenium可以驱动浏览器来执行一血操作,也就是说可以让浏览器模拟执行一些动作。比较常见的用法有:输入文字时用send_keys()方法,清空文字时用clear()方法,点击按钮时用click()方法
更多操作可见 http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement
5)动作链
鼠标拖曳、键盘按键等
ActionChains http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
6)执行JavaScript
调用execute_script()方法即可,传入参数为js方法
7)获取节点信息
获取属性 .get_attribute()
获取文本值 .get_text()
获取id、位置、标签名和大小
.id .location .tag_name .size
8)切换Frame
switch_to.frame()
Selenium打开页面后,默认在父级Frame中进行操作,如果页面中存在子Frame,则不能获取到子Frame中的节点
9)延时等待
隐式等待
如果Sekenium没有在DOM中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常。
.implicitly_wait()
显式等待
指定要找到的节点,然后指定一个最长等待时间。如果在规定时间内加载出来了这个节点,就返回查找的节点;如果到了规定时间依然没有加载出该节点,则抛出异常
WebDriverWait().until(expected_conditions.presence_of_element_located(()))
10)Cookies
使用Selenium,可以方便地对Cookies进行操作
.get_cookies() 获取cookie
.add_cookie() 添加cookie
.dele_all_cookies() 删除所有cookie
爬虫之Selenium 动态渲染页面爬取的更多相关文章
- 爬虫动态渲染页面爬取之selenium驱动chrome浏览器的使用
Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,可以用其进行网页动态渲染页面的爬取. 支持的浏览器包括IE(7, 8, 9, 10 ...
- 爬虫动态渲染页面爬取之Splash的介绍和使用
Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器,同时它对接了Python中的Twisted和QT库.利用它,我们同样可以实现动态渲染页面的抓取. 1. 功能介 ...
- 动态渲染页面爬取(Python 网络爬虫) ---Selenium的使用
Selenium 的使用 Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击.下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬.对于一些JavaS ...
- 动态渲染页面爬取-Selenium & Splash
模拟浏览器的动机 JS动态渲染的页面不止Ajax一种 很多网页的Ajax接口含有加密参数,分析其规律的成本过高 通过对浏览器运行方式的模拟,我们将做到:可见即可爬 Python中常用的模拟浏览器运行的 ...
- python3编写网络爬虫14-动态渲染页面爬取
一.动态渲染页面爬取 上节课我们了解了Ajax分析和抓取方式,这其实也是JavaScript动态渲染页面的一种情形,通过直接分析Ajax,借助requests和urllib实现数据爬取 但是javaS ...
- [Python3网络爬虫开发实战] 7-动态渲染页面爬取
在前一章中,我们了解了Ajax的分析和抓取方式,这其实也是JavaScript动态渲染的页面的一种情形,通过直接分析Ajax,我们仍然可以借助requests或urllib来实现数据爬取. 不过Jav ...
- 第十五节:Web爬虫之selenium动态渲染爬取
selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firef ...
- 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...
- 爬虫系列5:scrapy动态页面爬取的另一种思路
前面有篇文章给出了爬取动态页面的一种思路,即应用Selenium+Firefox(参考<scrapy动态页面爬取>).但是selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓 ...
随机推荐
- Git 日常操作
本地新建Git库步骤: 初始化git库:git init 建立本地和远程的关联: git remote add origin ip:端口/ 项目.git 从远程下载所有分支到本地:git fetch ...
- pascalcontext-fcn全卷积网络结构理解
一.说明 fcn的开源代码:https://github.com/shelhamer/fcn.berkeleyvision.org 论文地址:fully convolutional networks ...
- 数据分组分析—-groupby
数据分组分析—-groupby 代码功能: 对于综合表格data,基于title进行分组处理,并统计每一组的size,得到的是一个series序列,此序列可以放入索引中使用,index() impor ...
- 必须学会git和maven
转自: http://tieba.baidu.com/p/3458400116 很多人应该用过svn cvs之类的代码版本管理工具,git也是其中之一. svn和git最大的几个区别要点,svn必须要 ...
- 排产的两种方式(前推式与后拉式)在Optaplanner上的体现
生产计划的约束 在制定生产计划过程中,必然是存在某些制约因素,满足某些需求才能进行的,或是交期保证.或是产能限制.或是关键工序制约.即TOC理论 - 任何系统至少存在着一个制约因素/瓶颈:否则它就可能 ...
- c++ map 注意事项
1. 往map里面插入元素: 下标方式[]: map[key] = value; 调用insert: map.insert(make_pair(key, value)); 下标方式 ...
- Web高级 HTTP报文
1. 报文结构 1.1 请求报文结构 Start-Line 单行,包括 Method + URL + HTTP Version Headers 多行,形式为 Name:Value Body 可选,主体 ...
- note 5 二分法求平方根,素数,回文数
+二分法求平方根 x = float(raw_input('Enter the number')) low = 0 high = x guess = (low + high ) / 2 if x &l ...
- HTML如何实现斜体字
HTML实现斜体字的标签为<i>标签,用来实现字体倾斜,写法如下: 字体斜体:<i>内容</i> 案例:正常 斜体 当文字加入i标签以后字体就会成为斜体
- SpringBoot 配置文件 中文乱码
本方案,支持springboot 很简单 在配置文件中不写中文,写中文的ascll码 直接百度在线转ASCII,用工具 把中文转ASCII码==>\u628a\u4e2d\u6587\u8f6c ...