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多线程编程(八):使用Event实现线程间通信
Apr 05 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
用Python计算三角函数之acos()方法的使用
May 15 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Django中的Signal代码详解
Feb 05 Python
python print 按逗号或空格分隔的方法
May 02 Python
Python3匿名函数用法示例
Jul 25 Python
树莓派实现移动拍照
Jun 22 Python
Django MEDIA的配置及用法详解
Jul 25 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
用Python简陋模拟n阶魔方
Apr 17 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
我的论坛源代码(七)
2006/10/09 PHP
php的curl实现get和post的代码
2008/08/23 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
php实现上传图片文件代码
2015/07/19 PHP
JavaScript面象对象设计
2008/04/28 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python爬取梨视频的示例
2021/01/29 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
应用艺术专业个人的自我评价
2014/01/03 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
房贷工资证明范本
2015/06/12 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript