如何使用Python和JavaScript自動化URL檢查工具

如何使用Python和JavaScript自動化URL檢查工具

搜尋聖經:

URL檢查工具 ,以批量檢查網址並可視化影響索引的任何模式。

如何使用Python和JavaScript自動化URL檢查工具

URL檢查工具已經發展得如此強大,已經成為有效的技術搜索引擎優化工作不可或缺的工具。 該工具有五個主要用例,我們將在本文中自動化大多數用例:

  • 檢查索引的URL。
  • 檢查實時URL。
  • 查看頁面的呈現版本。
  • 檢查HTTP響應,頁面資源和JavaScript消息。
  • 請求為URL編制索引。

沒有URL檢查工具API

如果您曾嘗試自動化此工具,那麼您可能會因為沒有可用的API而感到沮喪。

那麼,我們如何在沒有API的情況下實現自動化呢?

我將讓您了解軟件質量保證團隊常用的強大技術:Web瀏覽器自動化。

大多數專業的Web開發商店都在Web瀏覽器中運行自動化質量保證測試。 他們這樣做是為了確保軟件在構建時按預期工作。

我們將使用瀏覽器自動化工具和技術,但目的是運行我們最喜歡的新工具,即URL檢測工具,它還沒有API。

請注意,Google有明確禁止自動查詢的條款,但其措辭似乎側重於排名跟踪器使用的Google搜索。

他們可能不會對這種技術感到滿意,所以我推薦使用極端適度的方法

在任何情況下,使用此方法檢查數千或數百萬個URL是不切實際的,您將在下面學習。

總體方法

我們會將瀏覽器自動化代碼連接到Chrome瀏覽器的運行實例。

在此示例中,我們將手動登錄Google Search Console。 連接後,我們將引導瀏覽器打開頁面,點擊頁面元素,提取內容等。

URL檢查工具只是我用來說明這種強大技術的一個例子。 您可以自動執行您在Web瀏覽器中定期執行的任何工具或任務。

讓我們玩得開心!

必需的工具和庫

Python + JavaScript

我決定用JavaScript編寫內容提取代碼,因為在DOM解析和DOM導航方面,它是一種更合適的語言。

但是,我正在用Python編寫其餘部分,因為我仍然需要分析和操作我們將收集的數據,而Python則更好。

建立起來

由於谷歌Chrome團隊出色的圖書館Puppeteer ,本文的神奇之處在於此。

我們專門使用非官方的Python包裝器Pyppeteer 。 Puppeteer / Pyppeteer允許您通過開發人員工具協議界面完全控制Chrome瀏覽器。

要從這個URL開始下載並安裝適用於您的操作系統的miniconda: https ://docs.conda.io/en/latest/miniconda.html。

Google Colaboratory中運行此功能是不切實際的,因為您需要運行本地Chrome瀏覽器。

您可以選擇安裝Jupyter以在編碼環境中使用它:

conda安裝jupyter

安裝Pyppeteer

python3 -m pip install pyppeteer

在我安裝了Pyppeteer(版本0.0.25)後,我遇到了一些 錯誤這些 錯誤迫使我恢復到幾個必需庫的舊版本。

conda安裝龍捲風== 4.5.3 conda install websocket == 6.0

在調試模式下啟動Chrome

在正確設置Pyppeteer和Jupyter之後,您可以繼續以調試模式啟動Chrome以允許腳本控制。

首先,建立一個單獨的用戶個人資料,以保存Google Search Console帳戶的用戶數據和密碼。

我們在Mac中使用此命令。

mkdir~ / chrome-dev / Applications / Google Chrome.app/Contents/MacOS/Google Chrome –remote-debugging-port = 9222 –no-first-run –user-data-dir =〜/ chrome-dev

這在Windows中是等效的(我還沒有測試過)。

mkdir~ / chrome-dev “C: Program Files(x86) Google Chrome Application Chrome.exe –remote-debugging-port = 9222 –no-first-run –user-data-dir =〜/ chrome-dev”

我們傳遞了兩個新的額外參數:

  • -remote調試端口
  • -user數據-DIR

第一個啟用遠程控制,而第二個建立另一個用戶配置文件,以便我們的測試不會影響我們的常規瀏覽(如果我們使用Chrome作為主瀏覽器)。

當Chrome啟動時,它會將一些調試消息打印到控制台。 您需要捕獲第一行,如下所示:

DevTools在ws上搜索:// 122.0.0.1:9222 / devtools / browser / be6cf39f-0748-4d99-b9ca-cf3bda9fdca6

我們對以ws://開頭的URI特別感興趣。 讓我們將其複製到Python變量,以便我們可以連接到Chrome實例。

WS =“WS://127.0.0.1:9222 / devtools /瀏覽器/ be6cf39f-0748-4d99-b9ca-cf3bda9fdca6”

接下來,讓我們手動登錄我們的相關Google帳戶並打開Google Search Console。

基本自動化操作

現在我們有一個處於調試模式的瀏覽器實例,並且我們已登錄到Google Search Console,我們將模擬用戶操作以自動執行URL檢查工具。

這些是我們將自動執行的特定瀏覽器操作:

  • 導航到網站頁面。
  • 單擊URL檢查器輸入框。
  • 鍵入我們要檢查的URL,包括按Enter鍵提交它。
  • 單擊報告手風琴以顯示報告(可選)。
  • 運行自定義JavaScript提取功能以提取報告數據。
  • 單擊REQUEST INDEXING以請求索引。
  • 單擊TEST LIVE以檢查頁面的實時版本。
  • 單擊RENDERED PAGE以查看頁面的呈現版本。

元素選擇器

要單擊網頁元素並提取其內容,您需要在解析的DOM中指定它們的位置。 XPath是

右鍵單擊所需的元素,單擊“檢查元素”,在Chrome Developer Tools的“元素”視圖中,再次右鍵單擊“複製”,選擇“JS路徑”。

我們將手動運行URL檢查器,並記錄我們需要的所有選擇器。 我們將使用CSS選擇器作為我們需要單擊的元素和JS Paths來獲取我們需要提取的元素。

這是我放在一起的清單:

URL檢查器搜索框

sel =“#gb> div.gb_gd.gb_Md.gb_Zb> div.gb_lc.gb_wd.gb_Fd.gb_rd.gb_vd.gb_Cd> div.gb_td> form> div> div> div> div> div> div.d1dlne> input。 Ax4B8.ZAGvjd“

我們將使用此選擇器單擊搜索框以使其成為焦點,並鍵入要搜索的URL,包括ENTER鍵擊。

請注意,每次加載Chrome瀏覽器時此選擇器都會更改,因此我需要手動將其複制並再次粘貼到腳本中。

網址位於Google /不在Google

我們將使用此元素來了解頁面是否已編制索引。

以下選擇器具有兩個備用路徑,具體取決於頁面是否已編制索引。

參考頁面

我們使用它來提取Google用於發現被檢查頁面的頁面。

抓取日期

我們使用它來提取Google抓取頁面的日期。

用戶聲明的Canonical

我們使用它來提取頁面上指定的規範。

Google-Selected Canonical

我們使用它來提取所選擇的規範Google

以下選擇器將允許我們單擊按鈕和選項卡以執行所需的操作。

JavaScript提取

接下來,我們將建立一個JavaScript函數,其中包含用於提取的所有相關JS路徑。

我們將此功能傳遞給Chrome以在我們的目標頁面上執行,我們將返回一個Python字典,我們可以將其加載到pandas數據框中。

大多數數據提取選擇器都有多個選項。 如果第一個選項失敗,我們使用技巧來執行替代。 || 運算符就是這樣,類似於它在Unix / Linux命令行中的工作方式。

嘗試直接使用Python獲取這些數據是可能的,但在這種情況下,使用JavaScript會更加簡單和直接。

把一切都放在一起

現在我們已經完成了所有準備步驟,讓我們來看看有趣的部分。 自動化整個事情!

以下是連接到Google Search Console運行的實時Chrome實例的代碼。

我添加了一些額外的代碼來控制窗口大小。 隨意更新以適應您的計算機。

建立要檢查的URL列表。 該列表可以來自索引下的XML站點地圖。

我不建議使用這種方法檢查太多的URL,也許是幾十個非常重要的頁面

首先,瀏覽器自動化速度慢,資源密集,您需要登錄自己的Google帳戶。 如果他們不喜歡這樣,他們可以輕鬆地禁止您的整個帳戶。

如果人們開始濫用此技術,Google也可能會開始添加驗證碼。

以下是在Search Console中打開主網頁的代碼。

然後,在這裡我們可以單擊URL檢查器輸入框以使其聚焦。

正如您在文章開頭的動畫GIF中看到的那樣,最酷的部分是觀看瀏覽器輸入要檢查的URL,逐個字符。 感覺就像魔術一樣。

我首先嘗試直接設置輸入字段值,但它不起作用。

如何使用Python和JavaScript自動化URL檢查工具

接下來,我們添加5秒的延遲以等待工具運行並檢查URL。 隨意增加它。

當報告打開時,我們可以直接運行數據提取,但是當我們正在觀察瀏覽器執行任務時,我認為擴展其中一個隱藏的選項卡會很有用。

現在,最重要的一步。 將報告的URL數據返回到Python。 我們將生成的JavaScript函數傳遞給Chrome,以評估並返回我們的數據字典。

這是一些示例輸出。

我將留下以下步驟作為練習,讓您完成使用我已經提供的選擇器:

  • 查看渲染頁面。
  • 進行實時測試。
  • 提交頁面到索引。

執行分析

在我們讓Chrome和Pyppeteer為我們做繁重之後,我們應該為我們在詞典列表中檢查的URL編制索引數據。 我們可以將它們轉換為熊貓數據框。

這是一個示例運行的樣子。

如何使用Python和JavaScript自動化URL檢查工具

使用pandas中的數據,我們可以對其進行切片和切塊,以便輕鬆隔離索引中頁面丟失的主要原因。

我們還可以將數據框導出為Excel或CSV以與其他團隊成員共享。

資源以了解更多信息

如果你還在考慮是否應該學習Python ,我希望自動化你的日常工作讓你對這些可能性感到非常興奮。 你的想像力和創造力是唯一的限制。

以下是一些示例社區成員,他們正在學習Python並取得巨大成功:

您可以按照這些不斷增長的SEO專家列表來了解最新的Python內容:

以下是我在研究本文時發現的一些資源:

更多資源:


圖片來源

所有截圖均由作者拍攝,2019年4月

Close Menu