爬虫之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需要运行本地浏览器,比较耗时,不太适合大规模网页抓 ...
随机推荐
- Eclipse上传项目到Git
转载自:http://blog.csdn.net/fan510988896/article/details/56277822 Git有和Svn类似的功能. 我们想使用Eclipse上传项目到自己的Gi ...
- Unity3D外包 团队更新一下UE4和Unity3D案例
欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.
- 【转】计算机信息系统安全保护等级划分准则(GB 17859-1999)
计算机信息系统安全保护等级划分准则(GB 17859-1999) 概述 计算机信息系统安全保护等级划分准则(GB 17859-1999) 1 范围 本标准规定了计算机系统安全保护能力的五个等级,即: ...
- case when then
--使用IN的时候 SELECT keyCol, CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B ) THEN 'Matched' ELSE 'Unmat ...
- K-means之亚洲杯
import numpy as np import xlrd from sklearn.cluster import KMeans from sklearn import preprocessing ...
- Python 目录整理
基础部分: 1 常量 2 字符编码 字符编码补充 3 编码集 4 break与continue 5装饰器 6 迭代器 7生成器 8面向过程 9模块 10包 11 递归调用 12文件的用途 13类 ...
- ubuntu16.04 pip install scrapy 报错处理
Failed building wheel for Twisted inculde/site/python3./Twisted failed with error code in tmp/pip-in ...
- .net core Ocelot实现API网关并部署在docker中
基于Ocelot(http://ocelot.readthedocs.io)搭建的API网关demo 软件以及系统版本: Asp.Net Core 2.2 Ocelot 13.5.0 CentOS ...
- 知识点:Mysql 索引优化实战(3)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 索引原理知识回顾 索引的性 ...
- Mysql 多表数据拼接插入及子查询结果集随机取一条
最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数 ...