使用 Python 指令碼分析網站的 SEO 和死鏈
Python 的核心在於自動化重複性任務,從而為您的其他搜尋引擎最佳化 (SEO) 工作騰出更多時間。 儘管 Python 可以為您節省大量時間和精力,但很少有 SEO 從業者使用 Python 來解決問題。 例如,Python 可用於以下任務:
- 資料提取
- 準備
- 分析與視覺化
- 機器學習
- 深度學習
在本文中,我們將主要關注資料提取和分析。 每個指令碼所需的模組將會在文中註明。
Python SEO 分析器
一個非常實用的網站分析指令碼稱為“SEO 分析器”。 這是一個全面的網站爬蟲,可以分析以下資訊:
- 字數統計
- 頁面標題
- Meta 描述
- 頁面上的關鍵詞
- 警告
- 缺少標題
- 缺少描述
- 缺少圖片 alt 文字
這對於快速分析基本 SEO 問題非常有用。 由於頁面標題、meta 描述和頁面上的關鍵詞是重要的排名因素,因此此指令碼非常適合清晰地瞭解可能存在的問題。
使用 SEO 分析器
在安裝了此指令碼所需的模組(BeautifulSoup 4 + urllib2)並將 Python 更新到 3.4+ 版本後,您在技術上就可以使用此指令碼了。 但是,Json 或工作變體對於匯出從 SEO 分析器獲得的資料非常有用。 安裝指令碼後,您可以使用以下命令:
seoanalyze http://internetvergelijnk.nl/
seoanalyze https://telefoonvergelijk.nl --sitemap https://telefoonvergelijk.nl/sitemap_index.xml
如以上示例所示,對於 internetvergelijk 和 telefoonvergelijk,都可以透過爬取網站或網站的 XML 站點地圖來進行 SEO 分析。 另一種選擇是從分析中生成 HTML 輸出,而不是使用 json。 這可以透過以下命令完成:
seoanalyze http://internetvergelijk.nl/ --output-format-html
如果您安裝了 json 並想要匯出資料,請使用以下命令:
from seoanalyzer import analyse output = analyse(site, sitemap) print(output)
您也可以選擇另一種方法,將分析作為指令碼執行,如下例所示:
在執行 –output-format html 指令碼後,這將匯出 HTML 檔案。 此 seoanalyze 指令碼非常適合最佳化您的頁面標題、meta 描述、影像和頁面上的關鍵詞。 它也比 Screaming Frog 快得多,因此如果您只想查詢這些資訊,則執行 seoanalyze 指令碼效率更高。
連結狀態分析器
使用 Python 進行搜尋引擎最佳化的另一種方法是使用一個指令碼來爬取您的網站並分析您的 URL 狀態程式碼。 此指令碼稱為 Pylinkvalidator,可以在此處找到)。 如果您在 Python 3.x 中執行它,則只需要 BeautifulSoup。 如果您執行的是 2.x 版本(如 2.6 或 2.7),則不需要 BeautifulSoup。
但是,為了加快爬取速度,安裝以下庫可能很有用:
1) lxml – 加快 HTML 頁面的爬取速度(需要 C 庫) 1) gevent – 使 pylinkvalidator 能夠使用綠色執行緒 1) cchardet – 加快文件編碼檢測速度
請記住這一點,它們對於爬取較大的網站可能非常有用,並且只是為了增強連結狀態分析器。
此指令碼的本質是爬取網站的整個 URL 結構,以便分析每個 URL 的狀態程式碼。 對於較大的網站來說,這是一個非常漫長的過程,因此建議使用可選的庫來加快速度。
使用連結狀態分析器
Pylinkvalidator 有大量不同的使用選項。 例如,您可以:
- 顯示進度
- 爬取網站和屬於另一個主機的頁面
- 僅爬取單個頁面及其連結到的頁面
- 僅爬取連結,忽略其他內容(影像、樣式表等)
- 以比預設值更多的執行緒或程序來爬取網站
- 更改您的使用者代理
- 爬取多個網站
- 檢查 robots.txt
- 爬取 body 標籤和 paragraph 標籤
建議透過 -P
或 --progress
顯示進度,因為沒有它,您會發現自己不知道爬取何時完成,而沒有任何視覺提示。 爬取更多執行緒(-- workers='執行緒數'
)和程序(-- mode=process --workers='執行緒數'
)的命令也非常有用。
當然,該指令碼還有更多選項可供探索。 以下示例顯示了一些可能的用法:
pylinkvalidate.py -p http://www.example.com/
上面的函式爬取網站並顯示進度。
pylinkvalidate.py -p workers=4 http://www.example.com/
此函式使用多個執行緒爬取網站並顯示進度。
pylinkvalidate.py -p --parser=lxml http://www.example.com/
此函式使用 lxml 庫來加快爬取速度,同時顯示進度。
pylinkvalidate.py -P --types=a http://www.example.com/
上面的函式僅爬取您網站上的連結 (<a href>
),忽略影像、指令碼、樣式表以及您網站上任何其他非連結屬性。 當爬取大型網站的 URL 時,這也是一個有用的函式。 指令碼執行完成後,您將獲得一個 URL 列表,其中包含爬取您的網站時找到的狀態程式碼為 4xx 和 5xx 的 URL。 除此之外,您還將獲得一個連結到該頁面的 URL 列表,以便您更容易修復死鏈。 常規爬取不顯示任何 3xx 狀態程式碼。 有關您的頁面可以從哪些 URL 訪問的更多詳細資訊,請嘗試以下函式:
pylinkvalidate.py --report-type=all http://www.example.com/
這提供了有關頁面的狀態程式碼以及連結到該頁面的所有其他頁面的資訊。
一個非常有用的 SEO 工具,您可以使用它來爬取您的網站以查詢死鏈 (404) 和伺服器錯誤。 這兩種錯誤都可能對您的 SEO 工作不利,因此請務必定期爬取您自己的網站,以便儘快修復這些錯誤。
結論
雖然這些指令碼非常有用,但 Python 在 SEO 領域還有許多其他用途。 挑戰自己建立可以提高 SEO 工作效率的指令碼。 有很多 Python 指令碼可以使您的生活更輕鬆。 例如,有用於檢查 hreflang 標籤、規範標籤、robots.txt 等的指令碼。 因為在當今時代,當它可以自動化時,誰還會手動操作呢?