python+selenium+Chrome options参数的使用


Posted in Python onMarch 18, 2020

Chrome Options常用的行为一般有以下几种:

  • 禁止图片和视频的加载:提升网页加载速度。
  • 添加代理:用于翻墙访问某些页面,或者应对IP访问频率限制的反爬技术。
  • 使用移动头:访问移动端的站点,一般这种站点的反爬技术比较薄弱。
  • 添加扩展:像正常使用浏览器一样的功能。
  • 设置编码:应对中文站,防止乱码。
  • 阻止JavaScript执行
  • ...

Chrome Options是一个配置chrome启动时属性的类,通过这个参数我们可以为Chrome添加如下参数:

  • 设置 chrome 二进制文件位置 (binary_location)
  • 添加启动参数 (add_argument)
  • 添加扩展应用 (add_extension, add_encoded_extension)
  • 添加实验性质的设置参数 (add_experimental_option)
  • 设置调试器地址 (debugger_address)

针对编码格式的操作

# 设置默认编码为 utf-8
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)

针对UA请求头的操作

# 设置请求头为huaweiMeta10 Pro
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')
options.add_argument('--headless') # 浏览器不提供可视化页面
driver = webdriver.Chrome(chrome_options = options)

http://www.fynas.com/ua

针对禁止加载图片的操作

# 设置浏览器禁止加载图片
from selenium import webdriver
options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options = options)

针对IP代理的操作

特别需要注意,在选择代理时,尽量选择静态IP,才能提升爬取的稳定性。如果使用动态匿名IP,每个IP的存活时间是很短的。

# 设置无账号密码的代理
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--proxy-server=http://ip:port') 
driver = webdriver.Chrome(chrome_options=chromeOptions)
# 设置有账号密码的代理
proxyauth_plugin_path = create_proxyauth_extension(
   proxy_host='host',
   proxy_port='port',
   proxy_username="username",
   proxy_password="password"
  )
options.add_extension(proxyauth_plugin_path)

查看IP地址的链接:http://httpbin.org/ip

针对添加插件的操作

# 添加xpath helper应用

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

# 设置好应用扩展
extension_path = 'your file_path'
chrome_options.add_extension(extension_path)

针对登录时关闭弹出的密码保存提示框

from selenium import webdriver 
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions() 
prefs = {} 
# 设置这两个参数就可以避免密码提示框的弹出
prefs[“credentials_enable_service”] = False 
prefs[“profile.password_manager_enabled”] = False 
options.add_experimental_option(“prefs”, prefs) 
browser = webdriver.Chrome(chrome_options=options) 
browser.get('https://www.baidu.com/')
browser.quit()

其它配置

options.add_argument('--disable-infobars') # 禁止策略化
options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
options.add_argument('window-size=1920x3000') # 指定浏览器分辨率
options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--incognito') # 隐身模式(无痕模式)
options.add_argument('--disable-javascript') # 禁用javascript
options.add_argument('--start-maximized') # 最大化运行(全屏窗口),不设置,取元素会报错
options.add_argument('--disable-infobars') # 禁用浏览器正在被自动化程序控制的提示
options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 手动指定使用的浏览器位置

更多插件操作请参考:https://3water.com/article/182967.htm

到此这篇关于python+selenium+Chrome options参数的使用的文章就介绍到这了,更多相关selenium Chrome options参数 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
python实现QQ空间自动点赞功能
Apr 09 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
scrapy-splash简单使用详解
Feb 21 Python
pandas取dataframe特定行列的实现方法
May 24 Python
selenium WebDriverWait类等待机制的实现
Mar 18 #Python
Python socket处理client连接过程解析
Mar 18 #Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 #Python
Python如何使用paramiko模块连接linux
Mar 18 #Python
Python selenium页面加载慢超时的解决方案
Mar 18 #Python
Python Selenium 设置元素等待的三种方式
Mar 18 #Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 #Python
You might like
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php读取csc文件并输出
2015/05/21 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python交互式图形编程实例(一)
2017/11/17 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python WSGI的深入理解
2018/08/01 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
vue路由实现登录拦截
2021/03/24 Vue.js
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
元旦趣味活动方案
2014/08/22 职场文书
人民检察院起诉书
2015/05/20 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python