使用 Ruby 進行網頁抓取 – 教程

已發表: 2017-08-24

網絡數據的顯著增長和指數級增長為各個行業開闢了新途徑。 從製造單位到服務部門,數據是全球企業為與不斷發展的時代保持聯繫而採用的重要組成部分。 Web 數據不僅擁有有關競爭和市場的信息的金礦,而且還提供可用於改進內部流程和運營的見解。

Web 抓取有助於提取目標在線數據,以供分析引擎或 BI 工具進一步使用。 網絡抓取的目標仍然不同——

  • 數據提取是宣傳您的業務和推廣產品/服務的有效方式
  • 用戶、消費者和 Web 訪問者可以獲得有關服務或產品的所需信息。
  • 公司可以獲得有關現有戰略和計劃的競爭情報,以增加各自的市場份額。
  • 品牌可以通過人與人之間的社交媒體互動了解對其品牌的一般看法。 這有助於營銷團隊設計和部署專門針對該受眾角色的相關營銷信息,從而提高轉化的可能性。
  • 企業可以更清楚地了解目標受眾的需求、痛點和偏好。 然後,他們可以利用這種寶貴的情報推動產品開發朝著正確的方向發展。

想像一下,如果我們能夠構建 Web 數據、消除噪音並將它們導出為機器可讀的格式會帶來什麼好處。 讓我們看看如何使用 Ruby 來實現這一點。

編碼腳本的選擇

數據提取和網絡抓取實踐的實際實施並非易事。 CSS、HTML 和正確的編碼腳本的基本知識將使您的旅程順利。 您對編碼腳本的選擇將在這種情況下發揮至關重要的作用。 讓我們找出為什麼 Ruby 會在市場上引起轟動。

如果您計劃啟動您的第一個網頁抓取程序,Ruby 可以扮演可靠的腳本語言的角色。 這門語言如此受歡迎的原因有很多,以下原因將幫助您理解為什麼它如此有效!

  • 一個強大的腳本:Ruby-On-Rails 是一個非常強大和有效的網頁抓取腳本。 對於初學者和新手來說,這種特殊的語言被證明是一種強大的資源。
  • 可靠的社區:Ruby 伴隨著強大的開發人員團隊,他們組成了一個可靠且高度可靠的社區。 擁有數以百萬計的文檔,對您來說沒有什麼大問題!
  • 易於安裝:安裝過程有據可查,而且相當容易遵循。

這些是使 Ruby 成為 Web 抓取不可或缺的選擇的一些因素。 設置和安裝應以最佳方式完成,因為這些過程對於數據提取過程的執行至關重要。 這是一個全面的教程,可幫助您完成整個過程。

分步指南

在開始之前,讓我們先弄清楚某些要點。 本教程面向 Mac 用戶,如果您使用不同的機器,初始設置過程可能會略有不同。 其次,該程序使用 Nokogiri,它可以將網頁更改為“Ruby 對象”,從而簡化網頁抓取過程。 考慮到這兩個因素,您可以開始您的項目。

在本指南中,我們將抓取 olx 上的前 100 個二手車列表的頭條新聞。

設置過程

以下是使用 Ruby 開發完整的 Web 提取設置的基本要求。

  • 您的計算機,無論是台式機還是筆記本電腦,都應該安裝 Ruby。 如果您是 Mac 的忠實擁護者,那麼工作就完成了一半。
  • 您將需要一個文本編輯器。 這是寫下程序命令所必需的。 如果您的計算機沒有內置選項,請嘗試下載 Sublime Text。 憑藉令人興奮的功能和酷炫的控件,這個文本編輯器將使編碼變得令人興奮和有趣。
  • 另一個必要條件是深入了解 HTML 和 CSS 的使用。 如果你打算掌握網頁抓取的藝術,那麼 CSS 和 HTML 的知識將是至關重要的。
  • 了解 Ruby。 在這種情況下,一些信息是必不可少的。 您可以查看一些在線課程並提高您的知識庫。 有了這些流程和因素,就該開始關鍵步驟了。

第 1 步:安裝依賴項

在安裝過程中,確保您獲得了有關三個有用的 Ruby Gem 的完整信息。 這三個選項包括:

  • NokoGiri
  • HTTP派對

由於我們已經解釋了一些關於 Nokogiri 的內容,讓我們討論一下 HTTParty 和 Pry。 HTTParty 是一個 gem,我們的網絡抓取工具將使用它向我們正在抓取的頁面發送 HTTP 請求。 我們將使用 HTTParty 發送 GET 請求,它將頁面的所有 HTML 內容作為字符串返回。 對於調試,我們使用 Pry,它是一個 ruby​​ gem。 它將幫助我們解析網頁的代碼,並且是此設置中必不可少的組件。

按照以下命令並在您的計算機上運行它們以在您的計算機上安裝這些 gem。

寶石安裝 nokogiri

寶石安裝派對

寶石安裝撬

第二步:創建爬蟲文件

您必須在計算機上的任何首選位置創建一個名為 nokogiri_tutorial 的文件夾。 桌面是這樣做的理想場所。 下一步是下載文本編輯器,如“Sublime Text”或您選擇的任何其他選項,並將文件保存到名為“web_scraper.RB”的文件夾中。 完成這些步驟後,您就可以處理依賴項了。

第 3 步:向頁面發送 HTTP 請求

首先創建一個名為“page”的變量操作,並確保它等於我們正在抓取的頁面的 HTTParty GET 請求。

在這種情況下: https ://www.olx.in/all-results/q-cars/

在此之後,您可以輸入“Pry. 開始(綁定)。” 導航並找到標記為 web_scraping.Rb 文件的文件夾。 立即將其保存到您的桌面並通過輸入此命令打開終端。

cd 桌面/nokogiri_tutorial

您的網絡抓取程序已準備好實施。 您可以運行此命令並運行它:

Ruby web_scraper.RB

終端應該變成 Pry,在處理進一步的過程之前檢查佈局是必不可少的。 您可以進入下一步。 但是,在您這樣做之前,請確保在所選終端中鍵入“exit”,離開 Pry,然後返回程序文件夾的原始位置。

第 4 步:繼續前往 NokoGiri

這裡的目標是首先將這些汽車列表轉換並更改為 NokoGiri 對象,因為這對於解析至關重要。 變量創建很重要,您必須開發一個名為“parse_page”的新變量。 Nokogiri 有一種將 HTML 字符串轉換為 Nokogiri 對象的獨特方法。 您可以將 Pry 留在代碼底部。

下一步是保存包含 Ruby 命令的文件。 Pry 將自動打開,並應輸入一個新變量“parse_page”。 這會將 Olx 頁面作為 Nokogiri 對象返回。

繼續在同一個文件夾中創建一個名為“cars.html”的 HTML 文件,並將 parse_page 命令的結果復制粘貼到該文件中。 這個格式化的 HTML 數據將派上用場,供以後參考。

在開始下一步之前,從終端中的 Pry 退出。

第 5 步:數據解析

數據解析需要編程和編碼的基本知識。 由於您要提取所有汽車列表的標題文本,因此 cars.html 文件將在交叉檢查中派上用場。 從文件夾中找到關鍵元素並使用“檢查元素工具”執行檢查,或者您也可以查看“頁面源代碼”。

由於我們發現列表位於類名為“content”的 div 中,因此以下是以下命令

parse_page.css('.content')

parse_page.css('.content').css('.row').css('.hdrlnk')

汽車陣列

每次運行命令時檢查編碼佈局和數組。 解析完成後,您必須將數據集導出為 CSV 文件。

第 6 步:將數據文件導出為 CSV

當您到達第 6 步時,您應該已成功完成抓取過程,並且將非結構化數據更改為結構化數據集。 現在讓我們回到終端。 如果您仍在其中,請退出 Pry,以便您的終端位於包含抓取程序和 cars.html 文件的 nokogiri_tutorial 文件夾中。 現在輸入以下命令:

觸摸汽車.csv

現在您將得到一個空白 CSV 文件,您可以將 cars_array 中的數據保存到該文件中。 您現在可以編寫一個簡單的腳本來將此數據寫入我們的新 CSV 文件,並且您在 CSV 文件中擁有結構化的汽車列表數據。 這將使您在需要時更容易處理和操作。

離別的思念

希望這應該讓您大致了解如何使用 Ruby 抓取網站。 是時候使用這項新掌握的技能來探索和抓取更複雜和更具挑戰性的網站了。