blog-auto-publishing-tools部落格自動釋出工具現在已經可以同時支援chrome和firefox了。
很多小夥伴可能對於如何進行配置和啟動不是很瞭解,今天帶給大家一個詳細的保姆教程,只需要跟著我的步驟一步來就可以無障礙啟動了。
前提條件
前提條件當然是先下載 blog-auto-publishing-tools這個部落格自動釋出工具,地址如下:https://github.com/ddean2009/blog-auto-publishing-tools
chrome配置
現在的主流瀏覽器肯定是chrome無疑了。所以我們首先聊一聊如何實現對chrome瀏覽器的支援。
使用selenium正常啟動chrome瀏覽器
selenium本身就自帶對chrome的支援,所以在selenium中使用chrome也是一個非常簡單的事情。
-
首先你需要下載安裝chrome。
-
然後使用pip來安裝selenium:
pip install selenium
- 你需要從ChromeDriver下載頁面下載與你的Chrome瀏覽器版本相對應的ChromeDriver。確保你下載的是與你的作業系統和Chrome版本相匹配的版本。
- 然後就可以在程式碼中使用了:
from selenium import webdriver
# 指定ChromeDriver的路徑
driver_path = '/path/to/your/chromedriver' # 替換為你的ChromeDriver路徑
# 建立一個新的Chrome瀏覽器例項
driver = webdriver.Chrome(executable_path=driver_path)
# 訪問一個網站
driver.get('http://www.example.com')
# ... 在這裡執行你的Selenium操作 ...
# 關閉瀏覽器
driver.quit()
簡單是簡單,但是這樣做的缺點是每次都需要下載一個新的,內建的chrome瀏覽器,所以在國內的網路環境下,很多人以為是程式被卡死了。
實際上並不是,只是網路慢而已。
事實上,我們已經已經在使用chrome了,為什麼不能attach到現有的chrome上執行selenium呢?
使用selenium連線到現有的chrome瀏覽器
這是blog-auto-publishing-tools正在做事情。
優點: 這樣做的優點有兩個。
第一就是不需要重新下載chrome瀏覽器。
第二就是可以藉助現有瀏覽器的登入態,不需要每次都在程式中重新登入。因為有些網站的登入條件是很複雜的。比如騰訊雲,你需要時不時的進行手機掃碼才能登入。
我們的步驟如下:
- 下載並安裝 Chrome。
- 下載chrome Driver Chrome Driver。
- chrome 以debug模式啟動
如果是mac電腦,那麼可以先給chrome設定一個alias
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
以debug模式啟動
chrome --remote-debugging-port=9222
!!!! 注意!!!
chrome啟動之後,一定要新開一個空白tab頁,或者隨便開啟一個網站,否則後面的selenium可能會出現假死的情況
在命令列你會看到類似下面的內容:
DevTools listening on ws://127.0.0.1:9222/devtools/browser/d4d05dd2-5b74-4380-b02d-12baa123445
這行ws很重要,我們把它記下來。
如果你是windows,那麼在chrome的快捷方式後面加上 --remote-debugging-port=9222 引數。
啟動chrome,輸入chrome://version 檢測 --remote-debugging-port=9222 是否出現在頁面上。
然後輸入:
http://localhost:9222/json/version
獲得 webSocketDebuggerUrl:
- 修改配置檔案
修改config/common.yaml 裡面的內容:
# chrome driver地址
service_location: /Users/wayne/Downloads/work/chromedriver-mac-arm64/chromedriver
# chrome除錯地址
debugger_address: localhost:9222/devtools/browser/4aab2b8b-112c-48a3-ba38-12baa123445
把service_location和debugger_address修改為你自己本機的配置。
你也可以使用簡單版本的 debugger_address: localhost:9222
我在windows環境下測試過是可以連線的。
在mac環境下有時可以連線,有時候不能連線,大家可以自行測試。
這樣,使用下面的程式碼就可以連線到現有的chrome了:
# 啟動瀏覽器驅動服務
service = selenium.webdriver.chrome.service.Service(common_config['service_location'])
# Chrome 的除錯地址
debugger_address = common_config['debugger_address']
# 建立Chrome選項,重用現有的瀏覽器例項
options = selenium.webdriver.chrome.options.Options()
options.page_load_strategy = 'normal' # 設定頁面載入策略為'normal' 預設值, 等待所有資源下載,
options.add_experimental_option('debuggerAddress', debugger_address)
# 使用服務和選項初始化WebDriver
driver = webdriver.Chrome(service=service, options=options)
firefox配置
除了chrome之外,用的最多的應該就是firefox了。
所以blog-auto-publishing-tools也提供了對firefox的支援。
使用selenium正常啟動firefox瀏覽器
要常規使用firefox,你需要下面幾部:
-
下載並安裝 Firefox。
-
下載geckodriver 驅動.下載與你的Firefox瀏覽器版本相對應的geckodriver。確保你下載的是與你的作業系統和Firefox版本相匹配的版本。
-
在程式碼中使用:
from selenium import webdriver
# 指定geckodriver的路徑
driver_path = '/path/to/your/geckodriver' # 替換為你的geckodriver路徑
# 建立一個新的Firefox瀏覽器例項
driver = webdriver.Firefox(executable_path=driver_path)
# 訪問一個網站
driver.get('http://www.example.com')
# ... 在這裡執行你的Selenium操作 ...
# 關閉瀏覽器
driver.quit()
同樣的,因為網路問題,所以這種方式在國內的環境中會很慢。
我們看看另外一種方式。
使用selenium連線到現有的firefox瀏覽器
-
下載並安裝 Firefox。
-
下載geckodriver 驅動.下載與你的Firefox瀏覽器版本相對應的geckodriver。確保你下載的是與你的作業系統和Firefox版本相匹配的版本。
-
在firefox的啟動命令之後加上:
-marionette -start-debugger-server 2828
注意,這裡的埠一定要是2828,不能自定義。
這時候你如果開啟firefox,就會看到導航欄變成了紅色,表示你已經啟動了遠端除錯模式。
輸入about:config
可以看到marionette.port的埠就是2828。
- 修改配置檔案
修改config/common.yaml 裡面的內容:
# firefox driver地址
service_location: "D:\\downloads\\geckodriver-v0.34.0-win32\\geckodriver.exe"
把driver_type修改為firefox。
#driver_type: "chrome"
driver_type: "firefox"
接下來就可以在程式中使用了:
# 啟動瀏覽器驅動服務
service = selenium.webdriver.firefox.service.Service(common_config['service_location'],
service_args=['--marionette-port', '2828',
'--connect-existing'])
# 建立firefox選項,重用現有的瀏覽器例項
options = selenium.webdriver.firefox.options.Options()
options.page_load_strategy = 'normal' # 設定頁面載入策略為'normal' 預設值, 等待所有資源下載,
driver = webdriver.Firefox(service=service, options=options)
總結
我在mac上測試了chrome,在windows上同時測試了chrome和firefox。都是可以用的。大家有問題可以私信我。
點我檢視更多精彩內容:www.flydean.com