如何使用 Colab 和 adverttools 構建自定義爬蟲
已發表: 2022-05-25在本視頻中,我們將討論如何使用 Google Colab、Advertools 和其他一些 Python 庫創建自己的自定義爬蟲。 在你害怕或被嚇壞之前,不要。 深吸一口氣。 一切都會好起來的。 我什至不自稱是編碼員,但我很擅長複製和粘貼。 我知道你可以像我一樣使用那個 Ctrl+C 按鈕。 讓我們看看我們如何創建自己的自定義 SEO 爬蟲,以及如何將其用於幫助我們解決一些獨特的問題。
資源
- 在此處訪問 Colab。
- 在此處了解有關廣告工具的更多信息。
視頻記錄:
讓我們看看如何使用 Google Colab 以及 Advertools、Python 庫構建自定義爬蟲。
什麼是 SEO 爬蟲(蜘蛛)?
爬蟲是可以像搜索引擎一樣爬取網站頁面的工具,它可以幫助我們獲得有價值的 SEO 信息。 它可以幫助我們以 Google、Bing 或其他搜索引擎查看我們網站的方式查看網站。 有一些工具可以做到這一點。 有很多工具可以做到這一點,最流行的可能是 Screaming Frog SEO Spider,它是我們一直喜歡和使用的工具,但有時我們需要自定義解決方案。
為什麼要創建自己的爬蟲?
大多數“現成的”爬蟲都做了令人驚奇的事情,但有時你有一個特定的問題需要回答,你可以創建一個自定義爬蟲來控制所有輸出。 您只會獲得您想要或需要的數據。 這樣您就不必受限於工具設置,但您可以使用 Colab 和Python。
什麼是廣告工具?
Advertools 是一個 Python 庫,可以讓你做很多事情。 您可以抓取網站、為您的搜索引擎營銷活動生成關鍵字、創建文字廣告、分析 SERP、深入了解社交媒體帖子,以及做更多其他事情。 這是一個非常靈活的庫。 它做了很多很酷的事情,而且使用起來相當簡單。
我不會稱自己為程序員。 我只想說我很擅長複製和粘貼。 儘管我不是一個深入的 Python 程序員,但我已經能夠從使用像 Advertools 這樣的工具中獲得很多好處。
我們要做什麼
這就是我們在這個視頻中要做的。
- 創建一個新的 Colab 文件並安裝 Adverttools
- 使用廣告工具創建自定義爬蟲
- 抓取和分析網站和數據
- 使用另一個名為 Plotly 的 Python 庫可視化其中的一些結果
- 導出數據
第 1 步:創建 Colab 文件並安裝 Adverttools
Google Colab 是一個工具,它可以讓你做很多很酷的事情。 它允許您在單元格中運行代碼來構建表格、構建您自己的程序、執行自定義操作、從機器學習到 SEO 等任何事情。 如果您以前從未使用過它,它可以免費使用,並且可以讓您免費利用 Google 的計算能力。 這很酷,所以我強烈建議你去看看。
如果您還沒有使用 CoLab,這裡有很多很棒的資源。 為了使用 Python 之外的庫,您必須做的一件事是自然安裝。 您需要安裝該程序。 大多數時候,您使用一個名為 PIP 的函數,然後您將拉入那個新庫。 這是一個相當簡單的使用過程。
所有這些構建這些程序的人所做的一件事就是他們向您展示瞭如何在他們的文檔中進行設置。 所以總是閱讀這些文檔,它會讓你理解,“我如何導入這些工具並讓這些工具為自己工作?”
為了安裝 Advertools,我們將在這裡使用這行代碼:
!pip install advertools
將此處的代碼放入 CoLab 的單元格中後,繼續點擊播放按鈕。 它將執行這段代碼。 你應該看到類似這樣的東西,它在這里安裝了代碼和整個包,這樣我們現在就可以使用這個庫來構建我們的爬蟲了。 一旦你看到綠色的複選標記,你就知道它已經完成了。
第 2 步:使用 Advertools 創建自定義爬蟲
接下來,我們將要執行一行新代碼。
import advertools as adv
from advertools import crawl
import pandas as pd
您可以繼續點擊此處的代碼按鈕,它將填充這個新的。 我們將導入 Advertools 庫的一些特定部分。 我們正在導入廣告工具,我們正在導入 crawl 方法。 我們還導入了一種叫做 pandas 的東西。 對於那些不熟悉 Python 的人,pandas 允許我們在數據框中處理我們的數據,基本上是在 Python 中製作表格。
一旦你設置了所有這些,你繼續運行你的代碼。 這將導入所有這些信息。 如果我們正在構建爬網,你會注意到這裡,它正在討論我們如何做到這一點,我們如何導入這些爬網。 有幾種方法; 你可以像我們一樣導入 Advertools 並運行這個命令行,它會做我們正在做的事情。
我想讓 Colab 更易於使用,以防我團隊中的某個人也想利用它。 我們將做一些與他們在這裡展示的有點不同的事情。 但是,如果您遵循這種方法,您將得到正確的結果並且它也將起作用。
site = "https://simplifiedsearch.net/" #@param {type:"string"}
crawl(site, 'simp.jl' , follow_links= True )
crawl_df = pd.read_json( 'simp.jl' , lines= True )
crawl_df.head()
我們要做的就是這行代碼。 我們要做的第一件事是定義一個變量,該變量將是我們要抓取的網站。 通過使用這個參數類型字符串,它在這裡給了我一個框,然後我可以在這裡輸入我想要抓取的網站。 我可以把我的網站放在這裡。 我可以把任何網站放在這裡,它會為我設置那個變量。 這樣我就不用在這裡輸入了。 我可以將它輸入到一個表格中,而那些不喜歡在單元格內部單擊的人可以繼續在這裡輸入一個側面。
在這種情況下,我們將使用我們的簡化搜索站點,因為我們一直都在使用它。 我們將繼續將其粘貼到此處。 就在下面,我們遵循與他們在這裡設置的完全相同的規則。 我們使用 Advertools.crawl,然後我們使用站點作為我們的變量。 我們有一個輸出文件。 然後我們希望它跟隨網站內的鏈接。
我們也進行下一步,設置爬取數據框,並告訴它打開我們的輸出文件,因為它將以 JSON 格式輸出。 pandas 將讀取 JSON 並為我們創建一個數據框。 最後,我告訴我們只是顯示這個數據框的頭部,以確保一切都按預期工作。 一旦我們按照此步驟運行此單元格,我們將抓取該網站,它將在下面進行數據轉儲,我們將能夠看到此抓取中的所有不同功能。
我要繼續運行這個單元。 僅僅因為它正在對整個網站進行爬網,這可能需要幾分鐘。 完成後,我們將討論如何利用爬網數據提取特定信息。
第 3 步:抓取和分析網站和數據
現在該站點已爬網,您可以看到我有一個 URL、標題、元描述、視點、字符集、H1、H2 和 H3 的列表。 所有這些信息都被拉入這個框架。 如果你想讓它看起來更乾淨一點,你可以在這裡點擊這個神奇的按鈕,谷歌會將這裡的數據傳輸到更容易使用的數據框架中。 我這里共有 266 列。我可以使用的列有很多。
您可能會問自己所有這些列中的內容。 我們可以回到這裡查看廣告工具,您可以看到所有不同的元素。 有相當多的出口數據,我們可以查看並提取很多很酷的信息。
如果我們想查看可用的所有不同列的列表,我們可以運行以下代碼:
columns = list (crawl_df)
columns
我們需要先獲取列並從中創建一個列表。 我們將使用代碼列表,然後放入括號,並在它們的 crawl_DF 中,這是我們的數據框的名稱,並調用新的列表列。 在這裡,我們有列,我們運行該單元格,您可以看到所有這些不同的可能列。 這是相當多的信息,如您所見,它正在尋找大量信息。

如果您只想查看其中的一部分信息怎麼辦? 如果您只想獲取所有標題或所有元描述或某些 H 標記信息,或者您可能想查看所有頁面以及您可能擁有的 schema.org 標記類型,該怎麼辦? 這就是 Adverttools 之類的東西派上用場的地方。
假設我們想查看頁面中的 JSON-LD 類型。
json_df = crawl_df[[ 'url' , 'jsonld_@type' ]]
json_df
我們可以從一些新代碼開始。 讓我們繼續創建一個名為 JSON-DF 的新數據框。 我們想從原始數據框中獲取一些信息。 我們要做的第一件事,讓我稍微往下走,讓每個人都更容易爬行,_DF。 我們將使用一個支架和另一個支架。
我們要提取的第一件事是 URL。 我們知道 URL 很重要,因為我們需要知道我們網站中的所有頁面,所有 URL。 接下來我們要做的是找到 JSON 類型。 我們可以回到這個列表,我們可以選擇 JSON 類型,複製它並說,我也想知道 JSON 類型。 我將繼續保持一致,這樣我們就可以遵循最佳實踐。 我們在這裡的這條小線上做什麼? 我們說“創建一個新的數據框”並使用來自我們原始數據庫的數據,來自我們的原始數據框並僅拉回 URL 和 JSON-LD 類型。
如果我運行它,它將創建一個僅包含該信息的新數據框。 為了查看這些數據,我可以繼續,輸入 JSON_DF,新建一個單元格,然後按 Enter。 它為我提供了我所有頁面的列表以及與這些特定頁面相關聯的標記類型。 如果您想快速查看並找到您網站上的所有 JSON、您擁有的類型以及您擁有的標記,這將非常有幫助。
此外,您是否有一些頁面缺少標記? 您可以快速識別這些。 我們有這個新數據,我們有我們所有的 URL,我們有我們知道該頁面上存在的所有 JSON-LD 類型。
第 4 步:可視化結果
假設我們想要創建一個快速報告或圖表來顯示給客戶或其他人,或者我們為他們添加到此站點的信息和數據量以及它的不同類型。
我需要做的第一件事是計算已添加的所有不同類型的標記,然後我可以將其可視化。 讓我們開始計算這個並創建一個新的數據框。 我已經創建了這段代碼,我將引導你完成它:
json_counts = json_df[ 'jsonld_@type' ].value_counts()
json_counts = json_counts.reset_index()
json_counts
這稱為 JSON 計數。 這是一個新的數據框。 我們從這裡的 JSON-LD 列中獲取數據。 我們讓它計算此列中的唯一值。 當我運行這段代碼然後告訴它輸出它時,你會看到我們已經計算了所有這些信息。
它所做的是它給了我這個錯誤,因為它在列表中找到了一些零或一些 NAS。 沒關係,因為您馬上就會看到我們在這裡獲得了這些信息。 這是所有不同的標記類型,它們都為我們準備好了。
您也注意到它看起來不像這裡的數據框。 我們必須將此數據框或此變量重新索引到數據框中才能正常工作。 我們將繼續提供我們的數據框並運行以下代碼:
json_counts = json_counts.reset_index()
當我們運行它時,你會看到我們有一個數據框。 我們有索引,也就是術語。 然後我們有 JSON-LD 類型和它的數量。 我們仍然沒有圖表。 我們仍然只有另一個數據框。 為了將這個數據框變成可視化或圖表,我們需要做什麼? 我們將使用一個叫做 Plotly 的東西。
Plotly 是另一個庫,與 Advertools 非常相似,我們可以使用它來創建可視化,具體來說,我們將使用 Plotly express。 我們需要做的第一件事是安裝 Plotly,我們繼續執行 PIPinstallPlotly,我將運行這個單元。 它已安裝在此工作表中,但沒關係。 如您所見,它會告訴我們它已經安裝,已經很滿意了。 我們可以走了。
獲取我們剛剛從這裡複製的代碼並將其粘貼回我們的爬蟲中。 我們不需要這個中間的,因為這是我們沒有使用的數據。 我們正在使用我們自己的數據。 我們確實需要將 Plotly express 導入為 PX,並且我們需要在此處連接我們的新數據庫,以便將正確的信息輸入到我們的圖表中。
! pip install plotly
import plotly.express as px
fig = px.bar(json_counts, x='index', y='jsonld_@type')
fig.show()
我們的數據框稱為 JSON 計數。 在我們的 X 上,我們將使用索引,在 Y 上,我們將使用 JSON 類型。 我為什麼選擇那些? 索引是單詞所在的位置。 我們希望在 X 上有這些,然後計數在 JSON-LD @type 上,這將是我們的 Y,它將告訴我們每個列中有多少。 我們會繼續把它放在這裡。 很簡單。 然後 fig.show 將顯示該圖。 所以現在,我們在這裡有所有不同的類型,在這裡,我們在一個漂亮的圖表中顯示了每種類型的不同數量。
如果你想分享它,你可以將它下載為 PNG,Plotly 現在會將它下載到你的計算機上。 你可以拿這個說,“我們在這麼多頁面上做了這麼多的標記。” 一種快速可視化它的非常酷的方法。
第 5 步:導出數據
但是,如果我們想下載所有這些數據並使用它,可能在 Google 表格或其他東西中怎麼辦? 好吧,您也可以這樣做。 我們只需要多使用一行代碼就可以了。 因此,假設我們將在此處下載此表,其中包含我們所有的網站頁面和 JSON-LD 類型。 我們可以繼續到這個單元或任何你想要的,然後我們將創建一個新的代碼行。
我們需要使用來自 Google Colab 的東西,稱為導入文件。 這是我們要做的第一件事。 接下來,我們要找到這個數據框,它是 JSON-DF。 我們將在下面添加它並說 .2_CSV,然後我們將為它命名。 我們可以稱之為 JSON_DF.CSV。 輸入此代碼後,您就創建了 CSV 文件。 如果我在此處查看我的文件夾,您將在此處看到該文件。
從這裡,我可以繼續下載它,或者我可以在這裡放一行代碼來幫助我們更快地下載它。 我可以說 files.download,然後我繼續調用我剛剛創建的這個文件,我要求 Colab 直接為我下載它。 當我運行這個單元時,它會下載那個文件,在這裡我有它。 我可以繼續,單擊打開,現在我有了這個 CSV 文件,我可以使用我擁有的任何類型的電子表格工具做任何我想做的事情。 我還可以看到可能缺少一些標記的那些。
你有它。 我們已經開始了,我們已經創建了我們自己的自定義爬蟲。 我們提取了一些自定義數據。 我們已經可視化了這些數據,並且我們已經下載了這些數據以供其他程序使用。 我們做了這一切,而我不是計算機程序員,我什至不想假裝自己是程序員。 就像我之前說的,我只是擅長複製和粘貼。 這些東西你們也可以想辦法。
當您有問題時,總會有很酷的解決方案。 如果您願意嘗試新的和不同的東西,我強烈建議您在 Colab 中玩轉。 那裡有很多很棒的資源。 有很多比我聰明得多的人在做更多令人驚奇的事情,我從中學到了很多,並且在我的營銷遊戲、研究、爬行等方面幫助了我。
如果您對我們今天所做的事情有任何疑問,請在下面發表評論。 我還將提供對這個特定 CoLab 文件的訪問權限,我什至會逐步分享我們在此過程中使用的代碼。 非常感謝您的收看。 不要忘記訂閱,直到下一次,快樂的營銷。