如何使用 Google Sheets 從網站上抓取數據
網頁抓取是一種強大的技術,可以從網站中提取資訊並自動分析它們。儘管您可以手動執行此操作,但這可能是一項乏味且耗時的任務。網路抓取工具使流程更快、更有效率,同時成本更低。
事實上,由於其內建的 IMPORTXML 功能,Google Sheets 擁有作為網頁抓取目的的全包解決方案的能力。此功能使用戶能夠輕鬆地從各種網站提取信息,然後將其用於一系列應用程序,例如數據分析、報告以及任何需要數據驅動洞察的任務。
Google 表格中的 IMPORTXML 函數
利用 Google Sheets 的內建功能(稱為「IMPORTXML」),可以從各種網路來源提取訊息,包括 XML、HTML、RSS 和 CSV 格式。此功能的實施有可能簡化從網站收集資料的流程,而無需廣泛的程式設計專業知識。
這是 IMPORTXML 的基本語法:
=IMPORTXML(url, xpath_query)
統一資源定位符 (URL) 指定希望透過網頁抓取技術從中提取資訊的特定網頁的位址。
XPath 查詢代表一種用於從 XML 文件中選擇特定資訊的精確語言,它概述了人們想要在其中提取的所需資料。
XPath(即 XML 路徑語言)用作瀏覽工具並從 XML 文件(包括 HTML)中提取資訊。利用這種語言,使用者可以識別 HTML 結構中所需資料元素的特定位置。掌握 XPath 查詢的基礎知識對於有效使用 IMPORTXML 函數至關重要。
理解 XPath
XPath 提供了一系列函數和運算符,可以在 HTML 文件中操作和過濾資料。雖然提供 XML 和 XPath 的詳盡概述超出了本文的範圍,但我將在本文中介紹 XPath 的幾個基本原則:
透過使用諸如正斜線(“/”)和雙斜線(//)之類的分隔符號來選擇元素,可以識別 HTML 文件中的特定路徑。例如,「/html/body/div」將標識位於「html」目錄中包含的 HTML 文件的「body」部分中的「div」元素的所有實例。
為了從給定網頁識別和提取特定屬性,可以利用基於屬性命名約定或其他可識別模式的各種選擇標準。透過使用適當的選擇器(例如本例中的「@href」),可以定位並檢索文件中存在的「href」屬性的所有實例。這種方法可以有效檢索相關訊息,同時過濾掉不相關的數據。
使用方括號內的謂詞過濾元素是一種允許人們根據方括號內指定的某些條件選擇特定元素的機制。這可以透過利用 HTML 標籤的屬性或類別來完成。一個範例是使用語法 /div[@class="container"]
選擇屬性 class
等於「container」的所有 `` 元素。
XPath 提供了一系列功能,包括使用「contains()」函數確定給定元素是否包含在另一個元素中,使用「starts-with()」檢查元素的標記名稱是否以指定字串開頭。函數,並使用“text()”函數提取元素的文字值。這些功能使用戶能夠根據特定的條件對XML文件進行有針對性的操作。
如何從網站中提取 XPath
對於熟悉函數語法、了解目標網站 URL 並已確定他們希望檢索的特定元素的人來說,使用 IMPORTXML 提取元素的 XPath 可能是一項具有挑戰性的任務。此過程涉及識別與所需元素關聯的唯一識別碼或屬性,然後結合 XPath 公式利用此資訊在網頁的 XML 結構內產生該元素的適當路徑。
使用 IMPORTXML 無需記住網站的整個架構即可從中獲取資訊。實際上,每個 Web 瀏覽平台都提供了一種有效的工具,使人們能夠輕鬆重現任何給定元素的 XPath。
「檢查元素」工具可透過簡化的流程從各種網頁元件中提取 XML 路徑語言 (XPath),詳細資訊如下:
使用首選的網路瀏覽應用程式(例如 Google Chrome 或 Mozilla Firefox)存取所需的網頁。
透過使用 Web 抓取工具(例如 Beautiful Soup 或 Scrapy)識別其在網頁原始碼中的位置來檢索所需的資料元素。
⭐右鍵單擊該元素。
要存取“檢查元素”功能,可以從右鍵單擊網頁並按住滑鼠按鈕獲得的上下文功能表中選擇它。此操作將導致瀏覽器顯示一個互動式面板,其中顯示頁面的底層 HTML 標記,並在此程式碼中直觀地區分相關的特定元素。
首先,按一下您要在網頁中修改的元素。然後,在右鍵單擊時出現的上下文選單中找到“檢查”選項。完成此操作後,從 HTML 程式碼中顯示的元素清單中選擇所需的元素以進行進一步編輯或操作。
按一下下方的按鈕可為所選元素產生 XPath 表達式,然後可以輕鬆地將其複製到剪貼簿。
現在我們已經獲得了必要的信息,讓我們繼續透過從給定網頁中提取 URL 來演示 IMPORTXML 的實際應用。
如何使用 IMPORTXML 從網站抓取鏈接
利用 IMPORTXML 的強大功能,人們可以從各種網站中提取大量資訊。這不僅包括文字內容,還包括圖像和影片等多媒體資產,以及網站上幾乎所有可以想到的元件。在這些元件中,超連結因其在理解網頁的結構和層次結構方面的重要性而特別突出。透過檢查給定頁面連結到的目的地,可以收集有關網站的性質和焦點的有價值的見解。
在 Google Sheets 中使用 IMPORTXML 可以快速從網頁中提取 URL,從而透過平台中提供的一系列功能促進後續分析。
抓取所有鏈接
若要擷取特定網頁上存在的所有 URL,可以採用以下方法:
=IMPORTXML(url, "//a/@href")
給定的 XPath 表達式會擷取與「a」元素的每個實例關聯的每個「href」屬性,從而成功隔離和收集網頁中存在的所有超連結。
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a/@href")
上述演算法提取維基百科條目中包含的每個超連結。
在不同的儲存格中輸入網頁 URL 並在其中引用它的做法是一種精明的方法,因為這種方法有助於保持簡潔的公式,同時避免混亂或複雜性。當制定 XPath 查詢以在資料分析上下文中實現無縫導航時,可以應用類似的策略。
抓取所有連結文本
要檢索超連結的內容以及它們各自的統一資源定位符,可以使用以下方法:
=IMPORTXML(url, "//a")
目前的查詢涵蓋所有元素的檢索,從而可以從結果中獲得提取的連結文字和關聯的 URL。
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a")
上述公式檢索相同維基百科條目中的錨文本。
如何使用 IMPORTXML 從網站抓取特定鏈接
有時,需要從某些網站檢索包含某些關鍵字或位於網頁指定區域內的網頁。
利用對 XPath 的熟練理解,可以精確地識別和定位所需的元素。
抓取包含關鍵字的鏈接
為了使用 XPath 提取包含特定關鍵字的 URL,可以使用「contains()」函數:
=IMPORTXML(url, "//a[contains(@href, 'keyword')]/@href")
給定的查詢會根據所提供的條件檢索其 href 屬性包含特定搜尋字詞的 HTML 元素的 href 值。
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a[contains(@href, 'record')]/@href")
前述演算法提取嵌入在線上百科全書上找到的書面內容的指定實例內的每個超鏈接,其中術語“記錄”出現在所述鏈接的主體中。
抓取節內的鏈接
為了從網頁的特定部分提取鏈接,可以利用 XPath 表達式來識別所需的部分。作為說明,請考慮以下程式碼片段:
=IMPORTXML(url, "//div[@class='section']//a/@href")
上述查詢涉及與分類為「div」並具有名稱「section」的HTML元素相關聯的超連結屬性的選擇,其中所述屬性通常用於識別連結或在網頁之間導航,從而促進數位平台上的用戶交互。
上述公式的目標是嵌入在類別屬性為「mw-content-container」的 HTML 元素中並嵌套在 id 屬性設定為「mainpage」的容器元素中的所有超連結。
=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//div[@class='mw-content-container']//a/@href")
事實上,重要的是要認識到 IMPORTXML 的功能超出了簡單的 Web 抓取操作。 IMPORT 系列函數可讓使用者將結構化資料表從網路上的各種來源直接無縫匯入到 Google Sheets 中。此功能使用戶能夠有效地收集和組織信息,而無需單獨手動輸入每條數據。
雖然 Google Sheets 和 Microsoft Excel 都擁有許多相似的功能,但值得注意的是,IMPORT 系列函數是 Google Sheets 獨有的。因此,在嘗試將網路來源的資料提取到 Microsoft Excel 時,必須探索替代策略。
使用 Google Sheets 簡化網頁抓取
將 Google Sheets 與 IMPORTXML 功能結合使用,可以提供一種適應性強且易於訪問的方法來從網頁中提取信息,使其成為那些尋求在線收集數據的人的流行選擇。
透過熟練地利用 XPath 並使用 IMPORTXML 制定有效的查詢,人們可以利用其完整的功能並從 Internet 資源中提取寶貴的資訊。因此,透過網頁抓取啟動資料擷取會將您的網路分析能力提升到進階階段。