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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
python sys模块sys.path使用方法示例
Dec 04 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
Python中模块string.py详解
Mar 12 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python reduce 函数使用详解
Dec 05 Python
python 用下标截取字符串的实例
Dec 25 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
python实现udp传输图片功能
Mar 20 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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中设置时区,记录日志文件的实现代码
2013/01/07 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
html5+canvas实现支持触屏的签名插件教程
2017/05/08 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
python的mysqldb安装步骤详解
2017/08/14 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
教师节学生演讲稿
2014/09/03 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
活动新闻稿范文
2015/07/17 职场文书
同学联谊会邀请函
2019/06/24 职场文书
tree shaking对打包体积优化及作用
2022/07/07 Java/Android