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动态监控日志内容的示例
Feb 16 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
简单了解OpenCV是个什么东西
Nov 10 Python
django之session与分页(实例讲解)
Nov 13 Python
浅谈Python NLP入门教程
Dec 25 Python
Python之读取TXT文件的方法小结
Apr 27 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python实现感知器算法(批处理)
Jan 18 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 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使之能同时支持GIF和JPEG
2006/10/09 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
php单例模式的简单实现方法
2016/06/10 PHP
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
java直接调用python脚本的例子
2014/02/16 Python
python中threading超线程用法实例分析
2015/05/16 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
西北政法大学自主招生自荐信
2014/01/29 职场文书
班干部演讲稿
2014/04/24 职场文书
国旗下演讲稿
2014/05/08 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
婚宴新娘致辞
2015/07/28 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android