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之有容乃大的list(2)
Sep 15 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
python 实现简单的FTP程序
Dec 27 Python
Python argparse模块使用方法解析
Feb 20 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
Python通过字典映射函数实现switch
Nov 06 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
pytorch 6 batch_train 批训练操作
May 28 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
php图像生成函数之间的区别分析
2012/12/06 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
python随机生成指定长度密码的方法
2015/04/04 Python
Python多线程和队列操作实例
2015/06/21 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
毕业生自我推荐
2013/11/04 职场文书
2013年保送生自荐信格式
2013/11/20 职场文书
仓库主管岗位职责
2014/03/02 职场文书
难忘的一天教学反思
2014/04/30 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
入党现实表现材料
2014/12/23 职场文书
表扬信格式模板
2015/05/05 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android