欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)

 更新時(shí)間:2020年03月18日 15:42:56   作者:Kosmoo  
這篇文章主要介紹了selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 背景

在使用selenium瀏覽器渲染技術(shù),爬取網(wǎng)站信息時(shí),默認(rèn)情況下就是一個(gè)普通的純凈的chrome瀏覽器,而我們平時(shí)在使用瀏覽器時(shí),經(jīng)常就添加一些插件,擴(kuò)展,代理之類的應(yīng)用。相對(duì)應(yīng)的,當(dāng)我們用chrome瀏覽器爬取網(wǎng)站時(shí),可能需要對(duì)這個(gè)chrome做一些特殊的配置,以滿足爬蟲的行為。

常用的行為有:

  • 禁止圖片和視頻的加載:提升網(wǎng)頁(yè)加載速度。
  • 添加代理:用于翻墻訪問某些頁(yè)面,或者應(yīng)對(duì)IP訪問頻率限制的反爬技術(shù)。
  • 使用移動(dòng)頭:訪問移動(dòng)端的站點(diǎn),一般這種站點(diǎn)的反爬技術(shù)比較薄弱。
  • 添加擴(kuò)展:像正常使用瀏覽器一樣的功能。
  • 設(shè)置編碼:應(yīng)對(duì)中文站,防止亂碼。
  • 阻止JavaScript執(zhí)行。
  • ………

2. 環(huán)境

  • python 3.6.1
  • 系統(tǒng):win7
  • IDE:pycharm
  • 安裝過(guò)chrome瀏覽器
  • 配置好chromedriver
  • selenium 3.7.0

3. chromeOptions

chromeOptions 是一個(gè)配置 chrome 啟動(dòng)是屬性的類。通過(guò)這個(gè)類,我們可以為chrome配置如下參數(shù)(這個(gè)部分可以通過(guò)selenium源碼看到):

  • 設(shè)置 chrome 二進(jìn)制文件位置 (binary_location)
  • 添加啟動(dòng)參數(shù) (add_argument)
  • 添加擴(kuò)展應(yīng)用 (add_extension, add_encoded_extension)
  • 添加實(shí)驗(yàn)性質(zhì)的設(shè)置參數(shù) (add_experimental_option)
  • 設(shè)置調(diào)試器地址 (debugger_address)

源代碼:

# .\Lib\site-packages\selenium\webdriver\chrome\options.py
class Options(object):

  def __init__(self):
    # 設(shè)置 chrome 二進(jìn)制文件位置
    self._binary_location = ''
    # 添加啟動(dòng)參數(shù)
    self._arguments = []
    # 添加擴(kuò)展應(yīng)用
    self._extension_files = []
    self._extensions = []
    # 添加實(shí)驗(yàn)性質(zhì)的設(shè)置參數(shù)
    self._experimental_options = {}
    # 設(shè)置調(diào)試器地址
    self._debugger_address = None

使用案例:

# 設(shè)置默認(rèn)編碼為 utf-8,也就是中文

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)

4. 常用配置官方網(wǎng)站參考:https://sites.google.com/a/chromium.org/chromedriver/capabilities

4.1. 設(shè)置編碼格式

# 設(shè)置默認(rèn)編碼為 utf-8,也就是中文

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)

4.2. 模擬移動(dòng)設(shè)備

移動(dòng)設(shè)備user-agent表格:http://www.fynas.com/ua

因?yàn)橐苿?dòng)版網(wǎng)站的反爬蟲的能力比較弱

# 通過(guò)設(shè)置user-agent,用來(lái)模擬移動(dòng)設(shè)備
# 比如模擬 android QQ瀏覽器
options.add_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 6
options.add_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 webdriver

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

# 啟動(dòng)瀏覽器,并設(shè)置好wait
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.set_window_size(configure.windowHeight, configure.windowWidth)  # 根據(jù)桌面分辨率來(lái)定,主要是為了抓到驗(yàn)證碼的截屏
wait = WebDriverWait(browser, timeout = configure.timeoutMain)

4.4. 添加代理

為selenium爬蟲添加代理,這個(gè)地方尤其需要注意的是,在選擇代理時(shí),盡量選擇靜態(tài)IP,才能提升爬取的穩(wěn)定性。因?yàn)槿绻x擇selenium來(lái)做爬蟲,說(shuō)明網(wǎng)站的反爬能力比較高(要不然直接上scrapy了),對(duì)網(wǎng)頁(yè)之間的連貫性,cookies,用戶狀態(tài)等有較高的監(jiān)測(cè)。如果使用動(dòng)態(tài)匿名IP,每個(gè)IP的存活時(shí)間是很短的(1~3分鐘)。

from selenium import webdriver
# 靜態(tài)IP:102.23.1.105:2005
# 阿布云動(dòng)態(tài)IP:http://D37EPSERV96VT4W2:CERU56DAEB345HU90@proxy.abuyun.com:9020
PROXY = "proxy_host:proxy:port"
options = webdriver.ChromeOptions()
desired_capabilities = options.to_capabilities()
desired_capabilities['proxy'] = {
  "httpProxy": PROXY,
  "ftpProxy": PROXY,
  "sslProxy": PROXY,
  "noProxy": None,
  "proxyType": "MANUAL",
  "class": "org.openqa.selenium.Proxy",
  "autodetect": False
}
driver = webdriver.Chrome(desired_capabilities = desired_capabilities)

4.5. 瀏覽器選項(xiàng)設(shè)置

selenium一般打開的是不帶擴(kuò)展的純凈的瀏覽器,但是有時(shí)候我們想對(duì)瀏覽器進(jìn)行一些設(shè)置,比如 設(shè)置flash選項(xiàng)的默認(rèn)值為全局始終允許,清除cookies,清除緩存 之類。

想要實(shí)現(xiàn)這個(gè)目的,有一種思路,下面以chrome瀏覽器為例:

在selenium爬蟲啟動(dòng)時(shí),首先開一個(gè)窗口,在地址欄鍵入:chrome://settings/content 或 chrome://settings/privacy,然后由程序,像操作普通網(wǎng)頁(yè)一樣,進(jìn)行設(shè)置,保存。

4.6.添加瀏覽器擴(kuò)展應(yīng)用

selenium一般打開的是不帶擴(kuò)展的純凈的瀏覽器,但是有時(shí)候我們爬取數(shù)據(jù)時(shí)需要借助一些插件,比如解析類xpath helper,翻譯類,獲取額外信息(銷量)等。那我們?cè)趺丛趩?dòng)chromedriver時(shí),帶上一些我們需要的插件呢?

下面以在chrome中加載Xpath Helper插件為例:

4.6.1. 下載相應(yīng)的插件Xpath Helper下載地址:http://www.dbjr.com.cn/softs/673040.html
如下,是一個(gè) 以 crx 為后綴的文件:

4.6.2.

將插件路徑填入代碼中

# 添加xpath helper應(yīng)用

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

# 設(shè)置好應(yīng)用擴(kuò)展
extension_path = 'D:/extension/XPath-Helper_v2.0.2.crx'
chrome_options.add_extension(extension_path)

# 啟動(dòng)瀏覽器,并設(shè)置好wait
browser = webdriver.Chrome(chrome_options=chrome_options)

4.6.3. 結(jié)果展示

4.6.4. 注意事項(xiàng)

第一,為了提高爬取速度,盡可能的少加載插件。

第二,有一種方案會(huì)加載用戶對(duì)chrome瀏覽器的所有配置信息,但是測(cè)試并無(wú)法使用,如下:

首先進(jìn)入C:\Users(用戶)\你的電腦名稱\AppData\Local\Google\Chrome\User Data\Default\Extensions,點(diǎn)開Extensions,里面的文件夾就是安裝過(guò)的擴(kuò)展,(記得先把電腦隱藏文件夾顯示出來(lái),否則找不到) 但是名字是一堆我看不懂的無(wú)序的英文字母,我的辦法是一個(gè)一個(gè)點(diǎn)開找到對(duì)應(yīng)的插件版本號(hào),版本號(hào)在chrome Extensions選項(xiàng)里找然后打包你需要的插件:打開chrome的設(shè)置,在里面點(diǎn)開擴(kuò)展程序,選中開發(fā)者模式,你安裝的插件的下面會(huì)出現(xiàn)一個(gè)ID,這個(gè)ID對(duì)應(yīng)的就是你要打包的插件,然后打包擴(kuò)展程序,找到對(duì)應(yīng)的文件夾(或者你也可以把這個(gè)文件夾復(fù)制到電腦任意地方)下面的版本號(hào)的文件夾,也就是ID名文件夾內(nèi)部的那個(gè)文件夾,然后點(diǎn)擊打包擴(kuò)展程序,就可以了,會(huì)相應(yīng)的在版本號(hào)的同一級(jí)地方出現(xiàn)后綴名是crx和pem的文件,這個(gè)crx的文件就是我們需要的(不過(guò)按照這種方式,在我的本地目錄是找不到這樣的crx文件,需要單獨(dú)下載…)。準(zhǔn)備工作完成,看代碼:

# 第一種方式
# chrome瀏覽器的擴(kuò)展程序都在:C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Profile 2\Extensions\下
chrome_options.add_argument("user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data")
# 加載所有Chrome配置, 用Chrome地址欄輸入chrome://version/,查看自己的“個(gè)人資料路徑”,然后在瀏覽器啟動(dòng)時(shí),調(diào)用這個(gè)配置文件,代碼如下:
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_argument('--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data') #設(shè)置成用戶自己的數(shù)據(jù)目錄
driver = webdriver.Chrome(chrome_options=option)
# 出現(xiàn)錯(cuò)誤結(jié)果
第一,所有瀏覽器窗口,包括自己打開的都會(huì)被控制住。
第二,其他動(dòng)作不起作用,而且會(huì)crash。
Traceback (most recent call last):
 File "E:/PyCharmCode/taobaoProductSelenium/taobaoSelenium.py", line 40, in <module>
  # 啟動(dòng)瀏覽器,并設(shè)置好wait
 File "E:\Miniconda\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
  desired_capabilities=desired_capabilities)
 File "E:\Miniconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 151, in __init__
  self.start_session(desired_capabilities, browser_profile)
 File "E:\Miniconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 240, in start_session
  response = self.execute(Command.NEW_SESSION, parameters)
 File "E:\Miniconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute
  self.error_handler.check_response(response)
 File "E:\Miniconda\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
  raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
 (Driver info: chromedriver=2.32.498550 (9dec58e66c31bcc53a9ce3c7226f0c1c5810906a),platform=Windows NT 6.1.7601 SP1 x86_64)

4.7. 登錄時(shí)關(guān)閉彈出的密碼保存提示框

最近在使用chrome登錄網(wǎng)站的時(shí)候總有密碼保存提示框,并不是所有的都會(huì)有密碼保存提示框,其實(shí)只需要設(shè)置啟動(dòng)chrome的相關(guān)參數(shù)就可以避免這種問題。

from time import sleep 
from selenium import webdriver 
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions() 
prefs = {} 
# 設(shè)置這兩個(gè)參數(shù)就可以避免密碼提示框的彈出
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/')

5. 其他參數(shù)

參考文章:http://www.dbjr.com.cn/article/182967.htm

5.1 chrome地址欄命令在Chrome的瀏覽器地址欄中輸入以下命令,就會(huì)返回相應(yīng)的結(jié)果。這些命令包括查看內(nèi)存狀態(tài),瀏覽器狀態(tài),網(wǎng)絡(luò)狀態(tài),DNS服務(wù)器狀態(tài),插件緩存等等。但是需要注意的是這些命令會(huì)不停的變動(dòng),所以不一定都是好用的。
  about:version - 顯示當(dāng)前版本
  about:memory - 顯示本機(jī)瀏覽器內(nèi)存使用狀況
  about:plugins - 顯示已安裝插件
  about:histograms - 顯示歷史記錄
  about:dns - 顯示DNS狀態(tài)
  about:cache - 顯示緩存頁(yè)面
  about:gpu -是否有硬件加速
  about:flags -開啟一些插件 //使用后彈出這么些東西:“請(qǐng)小心,這些實(shí)驗(yàn)可能有風(fēng)險(xiǎn)”,不知會(huì)不會(huì)搞亂俺的配置??!
  chrome://extensions/ - 查看已經(jīng)安裝的擴(kuò)展

5.2. chrome實(shí)用參數(shù)

其他的一些關(guān)于Chrome的實(shí)用參數(shù)及簡(jiǎn)要的中文說(shuō)明,使用方法同上4.5.4,當(dāng)然也可以在shell中使用。
  –user-data-dir=”[PATH]” 指定用戶文件夾User Data路徑,可以把書簽這樣的用戶數(shù)據(jù)保存在系統(tǒng)分區(qū)以外的分區(qū)。
  –disk-cache-dir=”[PATH]“ 指定緩存Cache路徑
  –disk-cache-size= 指定Cache大小,單位Byte
  –first run 重置到初始狀態(tài),第一次運(yùn)行
  –incognito 隱身模式啟動(dòng)
  –disable-javascript 禁用Javascript
  --omnibox-popup-count=“num” 將地址欄彈出的提示菜單數(shù)量改為num個(gè)。我都改為15個(gè)了。
  --user-agent=“xxxxxxxx” 修改HTTP請(qǐng)求頭部的Agent字符串,可以通過(guò)about:version頁(yè)面查看修改效果
  --disable-plugins 禁止加載所有插件,可以增加速度。可以通過(guò)about:plugins頁(yè)面查看效果
  --disable-javascript 禁用JavaScript,如果覺得速度慢在加上這個(gè)
  --disable-java 禁用java
  --start-maximized 啟動(dòng)就最大化
  --no-sandbox 取消沙盒模式
  --single-process 單進(jìn)程運(yùn)行
  --process-per-tab 每個(gè)標(biāo)簽使用單獨(dú)進(jìn)程
  --process-per-site 每個(gè)站點(diǎn)使用單獨(dú)進(jìn)程
  --in-process-plugins 插件不啟用單獨(dú)進(jìn)程
  --disable-popup-blocking 禁用彈出攔截
  --disable-plugins 禁用插件
  --disable-images 禁用圖像
  --incognito 啟動(dòng)進(jìn)入隱身模式
  --enable-udd-profiles 啟用賬戶切換菜單
  --proxy-pac-url 使用pac代理 [via 1/2]
  --lang=zh-CN 設(shè)置語(yǔ)言為簡(jiǎn)體中文
  --disk-cache-dir 自定義緩存目錄
  --disk-cache-size 自定義緩存最大值(單位byte)
  --media-cache-size 自定義多媒體緩存最大值(單位byte)
  --bookmark-menu 在工具 欄增加一個(gè)書簽按鈕
  --enable-sync 啟用書簽同步
  –single-process 單進(jìn)程運(yùn)行Google Chrome
  –start-maximized 啟動(dòng)Google Chrome就最大化
  –disable-java 禁止Java
  –no-sandbox 非沙盒模式運(yùn)行

到此這篇關(guān)于selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)selenium python配置chrome內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas數(shù)據(jù)處理之繪圖的實(shí)現(xiàn)

    pandas數(shù)據(jù)處理之繪圖的實(shí)現(xiàn)

    這篇文章主要介紹了pandas數(shù)據(jù)處理之繪圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python通過(guò)OpenPyXL處理Excel的完整教程

    Python通過(guò)OpenPyXL處理Excel的完整教程

    OpenPyXL是一個(gè)強(qiáng)大的Python庫(kù),用于處理Excel文件,允許讀取、編輯和創(chuàng)建Excel工作簿和工作表,本文將詳細(xì)介紹OpenPyXL的各種功能,希望對(duì)大家有所幫助
    2023-11-11
  • python制作可視化GUI界面自動(dòng)分類管理文件

    python制作可視化GUI界面自動(dòng)分類管理文件

    這篇文章主要為大家介紹了python制作可視化GUI界面實(shí)現(xiàn)自動(dòng)分類管理文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python flask框架實(shí)現(xiàn)傳數(shù)據(jù)到j(luò)s的方法分析

    python flask框架實(shí)現(xiàn)傳數(shù)據(jù)到j(luò)s的方法分析

    這篇文章主要介紹了python flask框架實(shí)現(xiàn)傳數(shù)據(jù)到j(luò)s的方法,結(jié)合實(shí)例形式分析了前端數(shù)據(jù)序列化及后臺(tái)Flask交互數(shù)據(jù)返回相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • Python collections.deque雙邊隊(duì)列原理詳解

    Python collections.deque雙邊隊(duì)列原理詳解

    這篇文章主要介紹了Python collections.deque雙邊隊(duì)列原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 詳解Python列表解析式的使用方法

    詳解Python列表解析式的使用方法

    Python?是一種極其多樣化和強(qiáng)大的編程語(yǔ)言!當(dāng)需要解決一個(gè)問題時(shí),它有著不同的方法。本文將將會(huì)展示列表解析式的使用方法,需要的可以參考一下
    2022-04-04
  • python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解

    python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解

    這篇文章主要介紹了python 根據(jù)正則表達(dá)式提取指定的內(nèi)容實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 基于Python實(shí)現(xiàn)自動(dòng)摳圖小程序

    基于Python實(shí)現(xiàn)自動(dòng)摳圖小程序

    這篇文章主要為了大家利用用Python制作一款界面化的摳圖小程序,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • 詳解Python函數(shù)中的幾種參數(shù)

    詳解Python函數(shù)中的幾種參數(shù)

    這篇文章主要為大家介紹了Python參數(shù)的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • pycharm中import呈現(xiàn)灰色原因的解決方法

    pycharm中import呈現(xiàn)灰色原因的解決方法

    這篇文章主要介紹了pycharm中import呈現(xiàn)灰色原因的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論