一鍵自動化部落格釋出工具,chrome和firfox詳細配置

flydean發表於2024-05-04

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也是一個非常簡單的事情。

  1. 首先你需要下載安裝chrome。

  2. 然後使用pip來安裝selenium:

pip install selenium
  1. 你需要從ChromeDriver下載頁面下載與你的Chrome瀏覽器版本相對應的ChromeDriver。確保你下載的是與你的作業系統和Chrome版本相匹配的版本。
  2. 然後就可以在程式碼中使用了:
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瀏覽器。

第二就是可以藉助現有瀏覽器的登入態,不需要每次都在程式中重新登入。因為有些網站的登入條件是很複雜的。比如騰訊雲,你需要時不時的進行手機掃碼才能登入。

我們的步驟如下:

  1. 下載並安裝 Chrome
  2. 下載chrome Driver Chrome Driver
  3. 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 引數。

image-20240503190824756

啟動chrome,輸入chrome://version 檢測 --remote-debugging-port=9222 是否出現在頁面上。

image-20240503190854471

然後輸入:

http://localhost:9222/json/version

獲得 webSocketDebuggerUrl:

image-20240503190939248

  1. 修改配置檔案

修改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,你需要下面幾部:

  1. 下載並安裝 Firefox

  2. 下載geckodriver 驅動.下載與你的Firefox瀏覽器版本相對應的geckodriver。確保你下載的是與你的作業系統和Firefox版本相匹配的版本。

  3. 在程式碼中使用:

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瀏覽器

  1. 下載並安裝 Firefox

  2. 下載geckodriver 驅動.下載與你的Firefox瀏覽器版本相對應的geckodriver。確保你下載的是與你的作業系統和Firefox版本相匹配的版本。

  3. 在firefox的啟動命令之後加上: -marionette -start-debugger-server 2828

image-20240504120509315

注意,這裡的埠一定要是2828,不能自定義。

這時候你如果開啟firefox,就會看到導航欄變成了紅色,表示你已經啟動了遠端除錯模式。

image-20240504120607831

輸入about:config

可以看到marionette.port的埠就是2828。

  1. 修改配置檔案

修改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

相關文章