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合并多个装饰器小技巧
Apr 28 Python
Python变量作用范围实例分析
Jul 07 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python计算两个地址之间的距离方法
Jun 09 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
python实现按日期归档文件
Jan 30 Python
python实现计算图形面积
Feb 22 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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
轻松掌握python设计模式之策略模式
2016/11/18 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
小班重阳节活动方案
2014/02/08 职场文书
银行授权委托书格式
2014/10/10 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
心术观后感
2015/06/11 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
应收账款管理制度
2015/08/06 职场文书
团支部书记竞选稿
2015/11/21 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书