Chrome瀏覽器的選項

3. chromeOptions
chromeOptions 是一個配置 chrome 啓動是屬性的類。通過這個類,我們可以爲chrome配置如下參數(這個部分可以通過selenium源碼看到):

設置 chrome 二進制文件位置 (binary_location)

添加啓動參數 (add_argument)

添加擴展應用 (add_extension, add_encoded_extension)

添加實驗性質的設置參數 (add_experimental_option)

設置調試器地址 (debugger_address)

源代碼:

# .\Lib\site-packages\selenium\webdriver\chrome\options.py
class 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 webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)
4. 常用配置
官方網站參考:https://sites.google.com/a/chromium.org/chromedriver/capabilities
4.1. 設置編碼格式
# 設置默認編碼爲 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. 模擬移動設備
移動設備user-agent表格:http://www.fynas.com/ua
因爲移動版網站的反爬蟲的能力比較弱
# 通過設置user-agent,用來模擬移動設備
# 比如模擬 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)

# 啓動瀏覽器,並設置好wait
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.set_window_size(configure.windowHeight, configure.windowWidth)   # 根據桌面分辨率來定,主要是爲了抓到驗證碼的截屏
wait = WebDriverWait(browser, timeout = configure.timeoutMain)
4.4. 添加代理
爲selenium爬蟲添加代理,這個地方尤其需要注意的是,在選擇代理時,儘量選擇靜態IP,才能提升爬取的穩定性。因爲如果選擇selenium來做爬蟲,說明網站的反爬能力比較高(要不然直接上scrapy了),對網頁之間的連貫性,cookies,用戶狀態等有較高的監測。如果使用動態匿名IP,每個IP的存活時間是很短的(1~3分鐘)。
from selenium import webdriver
# 靜態IP:102.23.1.105:2005
# 阿布雲動態IP:http://D37EPSERV96VT4W2:[email protected]: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. 瀏覽器選項設置
selenium一般打開的是不帶擴展的純淨的瀏覽器,但是有時候我們想對瀏覽器進行一些設置,比如 設置flash選項的默認值爲全局始終允許,清除cookies,清除緩存 之類。
想要實現這個目的,有一種思路,下面以chrome瀏覽器爲例:
在selenium爬蟲啓動時,首先開一個窗口,在地址欄鍵入:chrome://settings/content 或 chrome://settings/privacy,然後由程序,像操作普通網頁一樣,進行設置,保存。

4.6. 添加瀏覽器擴展應用
selenium一般打開的是不帶擴展的純淨的瀏覽器,但是有時候我們爬取數據時需要藉助一些插件,比如解析類xpath helper,翻譯類,獲取額外信息(銷量)等。那我們怎麼在啓動chromedriver時,帶上一些我們需要的插件呢?

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

4.6.1. 下載相應的插件
Xpath Helper下載地址:http://download.csdn.net/download/gengliang123/9944202
如下,是一個 以 crx 爲後綴的文件:

4.6.2. 將插件路徑填入代碼中
# 添加xpath helper應用

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

# 設置好應用擴展
extension_path = 'D:/extension/XPath-Helper_v2.0.2.crx'
chrome_options.add_extension(extension_path)

# 啓動瀏覽器,並設置好wait
browser = webdriver.Chrome(chrome_options=chrome_options)
4.6.3. 結果展示


4.6.4. 注意事項
第一,爲了提高爬取速度,儘可能的少加載插件。
第二,有一種方案會加載用戶對chrome瀏覽器的所有配置信息,但是測試並無法使用,如下:
參考文章:http://blog.csdn.net/y100100/article/details/44061469
參考文章:https://www.cnblogs.com/stonewang313/p/3938488.html
參考文章:http://blog.csdn.net/liaojianqiu0115/article/details/78353267
首先進入C:\Users(用戶)\你的電腦名稱\AppData\Local\Google\Chrome\User Data\Default\Extensions,點開Extensions,裏面的文件夾就是安裝過的擴展,(記得先把電腦隱藏文件夾顯示出來,否則找不到) 但是名字是一堆我看不懂的無序的英文字母,我的辦法是一個一個點開找到對應的插件版本號,版本號在chrome Extensions選項裏找然後打包你需要的插件:打開chrome的設置,在裏面點開擴展程序,選中開發者模式,你安裝的插件的下面會出現一個ID,這個ID對應的就是你要打包的插件,然後打包擴展程序,找到對應的文件夾(或者你也可以把這個文件夾複製到電腦任意地方)下面的版本號的文件夾,也就是ID名文件夾內部的那個文件夾,然後點擊打包擴展程序,就可以了,會相應的在版本號的同一級地方出現後綴名是crx和pem的文件,這個crx的文件就是我們需要的(不過按照這種方式,在我的本地目錄是找不到這樣的crx文件,需要單獨下載…)。準備工作完成,看代碼:
# 第一種方式
# chrome瀏覽器的擴展程序都在: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/,查看自己的“個人資料路徑”,然後在瀏覽器啓動時,調用這個配置文件,代碼如下:
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_argument('--user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data') #設置成用戶自己的數據目錄
driver = webdriver.Chrome(chrome_options=option)
# 出現錯誤結果
第一,所有瀏覽器窗口,包括自己打開的都會被控制住。
第二,其他動作不起作用,而且會crash。
Traceback (most recent call last):
  File "E:/PyCharmCode/taobaoProductSelenium/taobaoSelenium.py", line 40, in <module>
    # 啓動瀏覽器,並設置好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. 登錄時關閉彈出的密碼保存提示框
最近在使用chrome登錄網站的時候總有密碼保存提示框,並不是所有的都會有密碼保存提示框,其實只需要設置啓動chrome的相關參數就可以避免這種問題。
from time import sleep 
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/')
5. 其他參數
參考文章:http://blog.csdn.net/liaojianqiu0115/article/details/78353267
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 非沙盒模式運行
————————————————
版權聲明:本文爲CSDN博主「Kosmoo」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zwq912318834/article/details/78933910

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章