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数组的处理代码
Jan 04 Python
python中cPickle用法例子分享
Jan 03 Python
Python contextlib模块使用示例
Feb 18 Python
python将图片文件转换成base64编码的方法
Mar 14 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python中join()方法介绍
Oct 11 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
Django ORM filter() 的运用详解
May 14 Python
Python实现老照片修复之上色小技巧
Oct 16 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
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
php文件系统处理方法小结
2016/05/23 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python中对list去重的多种方法
2014/09/18 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
如何使用Python 打印各种三角形
2019/06/28 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
python实现画循环圆
2019/11/23 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
大学生毕业自我鉴定
2013/11/06 职场文书
土建工程师岗位职责
2014/06/10 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Mysql中存储引擎的区别及比较
2021/06/04 MySQL