Python 爬虫杂记 - Chrome Headless

Chrome Headless使用

测试 Chrome 版本: 62.0.3202.89(正式版本)(64 位)
Python环境:python2.7

注: Headless模式需要59版本及以上!

Chrome的安装与配置不在此赘述, 不过需要注意的是:

版本号与驱动的映射关系!
版本号与驱动的映射关系!!

版本号与驱动的映射关系!!!

Chrome与Chromedriver的映射关系表:

Chromedriver下载链接:http://chromedriver.storage.googleapis.com/index.html

1. 使用Headless模式
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 无头模式启动
chrome_options.add_argument(‘--headless‘)
# 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument(‘--disable-gpu‘)
# 初始化实例
driver= webdriver.Chrome(chrome_options=chrome_options)
# 请求百度
driver.get("http://www.baidu.com")
2. 禁用图片
2.1 网上大多数的资料给的是以下这种方式, 但是在Headless的模式下并没有生效, 在非Headless的模式下是生效的。
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
2.2 以下的这种方式在Headless的模式下是生效的, 非Headless模式下也是生效的。
chrome_options.add_argument(‘blink-settings=imagesEnabled=false‘)
3. 添加代理
chrome_options.add_argument("--proxy-server=http://" + ip:port)
4. 修改User-Agent
Chrome Headless模式为什么要修改User-Agent, 来看一下同一个浏览器不同模式下的User-Agent:
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/62.0.3202.89 Safari/537.36"
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36"
# 修改User-Agent
chrome_options.add_argument(‘user-agent= ‘你想修改成的User-Agent‘)
5. 打开新的标签页
#打开空白标签页的方式有很多, 在此只演示一种
js=‘window.open("https://www.jianshu.com/p/4fef4142b33f");‘
driver.execute_script(js) # 通过打开新的标签页, 可以节省浏览器打开的时间,减少资源的浪费。
6. 关闭新打开的标签页
# 分两步走
# 1.获取标签页的句柄
handlesList = driver.window_handles  # 返回一个浏览器中所有标签的句柄列表, 顺序为打开窗口的顺序
# 2. 切换窗口, 关闭标签
driver.switch_to.window(handlesList[0]) # 切换到百度标签
driver.close()    # 关闭标签,这里必须用 driver.close() ,用driver.quit()会导致浏览器关闭
7. driver使用完之后切记要driver.quit(), 不然或导致内存爆满
8. 其他:

切换标签的时候,我之前用的方法会出现这种状况, 原因是该方法不支持了:

不支持的不只是这一种, 还有如下:

driver.switch_to_active_element()       ==>    driver.switch_to.active_element()            定位到当前聚焦的元素上

driver.switch_to_alert()                ==>    driver.switch_to.alert()                     切换到alert弹窗

driver.switch_to_default_content()      ==>    driver.switch_to.default_content()           切换到最上层页面

driver.switch_to_frame(frame_reference)  ==>   driver.switch_to.frame(frame_reference)       通过id、name、element(定位的某个元素)、索引来切换到某个frame

driver.switch_to_window()                ==>   driver.switch_to.window()                     切换到指定的标签页

driver.switch_to.parent_frame()  switch_to中独有,可以切换到上一层的frame,对于层层嵌套的frame很有用

注: 用pycharm编程的时候还是提示switch_to_window, 但此方法已经不能用了!!

本人水平有限, 如有错误欢迎提出指正!如有参考, 请注明出处!!禁止抄袭,遇抄必肛!!!

原文地址:https://www.cnblogs.com/nullnullnull/p/11492327.html

时间: 2024-10-04 19:58:19

Python 爬虫杂记 - Chrome Headless的相关文章

反爬虫——使用chrome headless时一些需要注意的细节

以前我们介绍过chrome headless的用法(https://www.cnblogs.com/apocelipes/p/9264673.html). 今天我们要稍微提一下其中一个细节. 反爬和window.navigator对象 navigator对象,一个对大家来说既熟悉又陌生的名词,熟悉是因为在学BOM对象的时候或多或少都见过甚至在代码中使用过,陌生是因为对于navigator对象来说虽然各大浏览器都有实现却一直没有一个统一的标准,所以在不同浏览器上的navigator对象也可能是不一

Python爬虫知识点——Chrome开发者工具Network

Chrome开发者工具中Network功能介绍 第一列Name:请求的名称,一般会将URL的最后一 部分内容当作名称. 第二列Status: 响应的状态码,这里显示为200,代表响应是正常的.通过状态码,我们可   以判断发送了请求之后是否得到了正常的响应. 第三列Type: 请求的文档类型.这里为document, 代表我们这次请求的是一个HTML文档,内容就是一些HTML代码. 第四列initiator: 请求源.用来标记请求是由哪个对象或进程发起的. 第五列Size: 从服务器下载的文件和

[Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图

前两篇文章介绍了安装,此篇文章算是一个简单的进阶应用吧!它是在Windows下通过Selenium+Python实现自动访问Firefox和Chrome并实现搜索截图的功能.        [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)        [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium 自动访问Firefox 可以参照前文安装Selenium环境,目前Selenium这个用于Web应用程序测试

[Python爬虫] Windows下Selenium自动访问Firefox和Chrome并实现搜索截图

前两篇文章介绍了安装,此篇文章算是一个简单的进阶应用吧!它是在Windows下通过Selenium+Python实现自动访问Firefox和Chrome并实现搜索截图的功能. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上) [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium 自动访问Firefox 可以参照前文安装Selenium环境,目前Selenium这个用于Web应用程序测试的工具支持的浏览器包括IE.

Python爬虫教程-27-Selenium Chrome版本与chromedriver兼容版本对照表

我们使用Selenium+Chrome时,版本不一样, 会导致 chromedriver 停止运行 chromedriver 所有版本下载链接:http://npm.taobao.org/mirrors/chromedriver/ 请根据下面表格下载支持自己 Chrome 的版本 Selenium Chrome版本与chromedriver兼容版本对照表 ChromeDriver 版本 支持的 Chrome 版本 ChromeDriver v2.41 (2018-07-27) Supports

python爬虫入门01:教你在 Chrome 浏览器轻松抓包

通过 python爬虫入门:什么是爬虫,怎么玩爬虫? 我们知道了什么是爬虫 也知道了爬虫的具体流程 那么在我们要对某个网站进行爬取的时候 要对其数据进行分析 就要知道应该怎么请求 就要知道获取的数据是什么样的 所以我们要学会怎么抓咪咪! 哦,不对. 我们要学会怎么数据抓包   虽然小馒头也是包的一种 ok...anyway... 打开我们的 Chrome 浏览器 在这里 小帅b 提醒大家一句 尽量不要用国产浏览器 很多是有后门的 所以 Chrome 是首选! ok,打开 Chrome 浏览器之后

Python爬虫下载美女图片(不同网站不同方法)

声明:以下代码,Python版本3.6完美运行 一.思路介绍 不同的图片网站设有不同的反爬虫机制,根据具体网站采取对应的方法 1. 浏览器浏览分析地址变化规律 2. Python测试类获取网页内容,从而获取图片地址 3. Python测试类下载图片,保存成功则爬虫可以实现 二.豆瓣美女(难度:?) 1.  网址:https://www.dbmeinv.com/dbgroup/show.htm 浏览器里点击后,按分类和页数得到新的地址:"https://www.dbmeinv.com/dbgrou

Python爬虫突破封禁的6种常见方法

转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息. 本文假定读者已经了解如何用代码来抓取一个远程的URL,并具备表单如何提交及JavaScrip

Python爬虫之selenium的使用(八)

Python爬虫之selenium的使用 一.简介 二.安装 三.使用 一.简介 Selenium 是自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试.Selenium 支持这些浏览器驱动.Selenium支持多种语言开发,比如 Python,Java,C,Ruby等等. 二.安装 1.安装selenium pip3 install seleniu