2023年7月3日发(作者:)
selenium+python配置chrome浏览器的选项的实现1. 背景在使⽤selenium浏览器渲染技术,爬取⽹站信息时,默认情况下就是⼀个普通的纯净的chrome浏览器,⽽我们平时在使⽤浏览器时,经常就添加⼀些插件,扩展,代理之类的应⽤。相对应的,当我们⽤chrome浏览器爬取⽹站时,可能需要对这个chrome做⼀些特殊的配置,以满⾜爬⾍的⾏为。常⽤的⾏为有:禁⽌图⽚和视频的加载:提升⽹页加载速度。添加代理:⽤于翻墙访问某些页⾯,或者应对IP访问频率限制的反爬技术。使⽤移动头:访问移动端的站点,⼀般这种站点的反爬技术⽐较薄弱。添加扩展:像正常使⽤浏览器⼀样的功能。设置编码:应对中⽂站,防⽌乱码。阻⽌JavaScript执⾏。………2. 环境python 3.6.1系统:win7IDE:pycharm安装过chrome浏览器配置好chromedriverselenium 3.7.03. chromeOptionschromeOptions 是⼀个配置 chrome 启动是属性的类。通过这个类,我们可以为chrome配置如下参数(这个部分可以通过selenium源码看到):设置 chrome ⼆进制⽂件位置 (binary_location)添加启动参数 (add_argument)添加扩展应⽤ (add_extension, add_encoded_extension)添加实验性质的设置参数 (add_experimental_option)设置调试器地址 (debugger_address)源代码:# .s Options(object): def __init__(self): # 设置 chrome ⼆进制⽂件位置 self._binary_location = '' # 添加启动参数 self._arguments = [] # 添加扩展应⽤ self._extension_files = [] self._extensions = [] # 添加实验性质的设置参数 self._experimental_options = {} # 设置调试器地址 self._debugger_address = None使⽤案例:# 设置默认编码为 utf-8,也就是中⽂from selenium import webdriveroptions = Options()_argument('lang=zh_-8')driver = (chrome_options = options)4.1. 设置编码格式# 设置默认编码为 utf-8,也就是中⽂from selenium import webdriveroptions = Options()_argument('lang=zh_-8')driver = (chrome_options = options)4.2. 模拟移动设备因为移动版⽹站的反爬⾍的能⼒⽐较弱# 通过设置user-agent,⽤来模拟移动设备# ⽐如模拟 android QQ浏览器_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')# 模拟iPhone _argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')4.3. 禁⽌图⽚加载不加载图⽚的情况下,可以提升爬取速度。# 禁⽌图⽚的加载from selenium import webdriverchrome_options = Options()prefs = {"d_default_content_": 2}chrome__experimental_option("prefs", prefs)# 启动浏览器,并设置好waitbrowser = (chrome_options=chrome_options)_window_size(Height, Width) # 根据桌⾯分辨率来定,主要是为了抓到验证码的截屏wait = WebDriverWait(browser, timeout = tMain)4.4. 添加代理为selenium爬⾍添加代理,这个地⽅尤其需要注意的是,在选择代理时,尽量选择静态IP,才能提升爬取的稳定性。因为如果选择selenium来做爬⾍,说明⽹站的反爬能⼒⽐较⾼(要不然直接上scrapy了),对⽹页之间的连贯性,cookies,⽤户状态等有较⾼的监测。如果使⽤动态匿名IP,每个IP的存活时间是很短的(1~3分钟)。from selenium import webdriver# 静态IP:102.23.1.105:2005# 阿布云动态IP:D37EPSERV96VT4W2:******************************.com:9020PROXY = "proxy_host:proxy:port"options = Options()desired_capabilities = _capabilities()desired_capabilities['proxy'] = { "httpProxy": PROXY, "ftpProxy": PROXY, "sslProxy": PROXY, "noProxy": None, "proxyType": "MANUAL", "class": "", "autodetect": False}driver = (desired_capabilities = desired_capabilities)4.5. 浏览器选项设置selenium⼀般打开的是不带扩展的纯净的浏览器,但是有时候我们想对浏览器进⾏⼀些设置,⽐如 设置flash选项的默认值为全局始终允许,清除cookies,清除缓存 之类。想要实现这个⽬的,有⼀种思路,下⾯以chrome浏览器为例:在selenium爬⾍启动时,⾸先开⼀个窗⼝,在地址栏键⼊:chrome://settings/content 或 chrome://settings/privacy,然后由程序,像操作普通⽹页⼀样,进⾏设置,保存。4.6.添加浏览器扩展应⽤selenium⼀般打开的是不带扩展的纯净的浏览器,但是有时候我们爬取数据时需要借助⼀些插件,⽐如解析类xpath helper,翻译类,获取额外信息(销量)等。那我们怎么在启动chromedriver时,带上⼀些我们需要的插件呢?下⾯以在chrome中加载Xpath Helper插件为例:4.6.2.将插件路径填⼊代码中# 添加xpath helper应⽤from selenium import webdriverchrome_options = Options()# 设置好应⽤扩展extension_path = 'D:/extension/XPath-Helper_'chrome__extension(extension_path)# 启动浏览器,并设置好waitbrowser = (chrome_options=chrome_options)4.6.3. 结果展⽰4.6.4. 注意事项第⼀,为了提⾼爬取速度,尽可能的少加载插件。第⼆,有⼀种⽅案会加载⽤户对chrome浏览器的所有配置信息,但是测试并⽆法使⽤,如下:⾸先进⼊C:Users(⽤户)你的电脑名称AppDataLocalGoogleChromeUser DataDefaultExtensions,点开Extensions,⾥⾯的⽂件夹就是安装过的扩展,(记得先把电脑隐藏⽂件夹显⽰出来,否则找不到) 但是名字是⼀堆我看不懂的⽆序的英⽂字母,我的办法是⼀个⼀个点开找到对应的插件版本号,版本号在chrome Extensions选项⾥找然后打包你需要的插件:打开chrome的设置,在⾥⾯点开扩展程序,选中开发者模式,你安装的插件的下⾯会出现⼀个ID,这个ID对应的就是你要打包的插件,然后打包扩展程序,找到对应的⽂件夹(或者你也可以把这个⽂件夹复制到电脑任意地⽅)下⾯的版本号的⽂件夹,也就是ID名⽂件夹内部的那个⽂件夹,然后点击打包扩展程序,就可以了,会相应的在版本号的同⼀级地⽅出现后缀名是crx和pem的⽂件,这个crx的⽂件就是我们需要的(不过按照这种⽅式,在我的本地⽬录是找不到这样的crx⽂件,需要单独下载…)。准备⼯作完成,看代码:# 第⼀种⽅式# chrome浏览器的扩展程序都在:C:UsersAdministratorAppDataLocalGoogleChromeUser DataProfile 2Extensions下chrome__argument("user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data")# 加载所有Chrome配置, ⽤Chrome地址栏输⼊chrome://version/,查看⾃⼰的“个⼈资料路径”,然后在浏览器启动时,调⽤这个配置⽂件,代码如下:from selenium import webdriveroption = Options()_argument('--user-data-dir=C:UsersAdministratorAppDataLocalGoogleChromeUser Data') #设置成⽤户⾃⼰的数据⽬录driver = (chrome_options=option)# 出现错误结果第⼀,所有浏览器窗⼝,包括⾃⼰打开的都会被控制住。第⼆,其他动作不起作⽤,⽽且会crash。Traceback (most recent call last): File "E:/PyCharmCode/taobaoProductSelenium/", line 40, in
from selenium import webdriver
from import Byoptions = Options()
prefs = {}
# 设置这两个参数就可以避免密码提⽰框的弹出prefs[“credentials_enable_service”] = False
prefs[“rd_manager_enabled”] = False
_experimental_option(“prefs”, prefs)
browser = (chrome_options=options)
('/')5. 其他参数5.1 chrome地址栏命令在Chrome的浏览器地址栏中输⼊以下命令,就会返回相应的结果。这些命令包括查看内存状态,浏览器状态,⽹络状态,DNS服务器状态,插件缓存等等。但是需要注意的是这些命令会不停的变动,所以不⼀定都是好⽤的。 about:version - 显⽰当前版本 about:memory - 显⽰本机浏览器内存使⽤状况 about:plugins - 显⽰已安装插件 about:histograms - 显⽰历史记录 about:dns - 显⽰DNS状态 about:cache - 显⽰缓存页⾯ about:gpu -是否有硬件加速 about:flags -开启⼀些插件 //使⽤后弹出这么些东西:“请⼩⼼,这些实验可能有风险”,不知会不会搞乱俺的配置啊! chrome://extensions/ - 查看已经安装的扩展5.2. chrome实⽤参数其他的⼀些关于Chrome的实⽤参数及简要的中⽂说明,使⽤⽅法同上4.5.4,当然也可以在shell中使⽤。 –user-data-dir=”[PATH]” 指定⽤户⽂件夹User Data路径,可以把书签这样的⽤户数据保存在系统分区以外的分区。 –disk-cache-dir=”[PATH]“ 指定缓存Cache路径 –disk-cache-size= 指定Cache⼤⼩,单位Byte –first run 重置到初始状态,第⼀次运⾏ –incognito 隐⾝模式启动 –disable-javascript 禁⽤Javascript --omnibox-popup-count=“num” 将地址栏弹出的提⽰菜单数量改为num个。我都改为15个了。 --user-agent=“xxxxxxxx” 修改HTTP请求头部的Agent字符串,可以通过about:version页⾯查看修改效果 --disable-plugins 禁⽌加载所有插件,可以增加速度。可以通过about:plugins页⾯查看效果 --disable-javascript 禁⽤JavaScript,如果觉得速度慢在加上这个 --disable-java 禁⽤java --start-maximized 启动就最⼤化 --no-sandbox 取消沙盒模式 --single-process 单进程运⾏ --process-per-tab 每个标签使⽤单独进程 --process-per-site 每个站点使⽤单独进程 --in-process-plugins 插件不启⽤单独进程 --disable-popup-blocking 禁⽤弹出拦截 --disable-plugins 禁⽤插件 --disable-images 禁⽤图像 --incognito 启动进⼊隐⾝模式 --enable-udd-profiles 启⽤账户切换菜单 --proxy-pac-url 使⽤pac代理 [via 1/2] --lang=zh-CN 设置语⾔为简体中⽂ --disk-cache-dir ⾃定义缓存⽬录 --disk-cache-size ⾃定义缓存最⼤值(单位byte) --media-cache-size ⾃定义多媒体缓存最⼤值(单位byte) --bookmark-menu 在⼯具 栏增加⼀个书签按钮 --enable-sync 启⽤书签同步 –single-process 单进程运⾏Google Chrome –start-maximized 启动Google Chrome就最⼤化 –disable-java 禁⽌Java –no-sandbox ⾮沙盒模式运⾏到此这篇关于selenium+python配置chrome浏览器的选项的实现的⽂章就介绍到这了,更多相关selenium python配置chrome内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688384614a130023.html
评论列表(0条)