當前位置:編程學習大全網 - 編程語言 - 如何用 Python 實現 Web 抓取

如何用 Python 實現 Web 抓取

Web 抓取的定義

Web 抓取是抽取網絡數據的過程。只要借助合適的工具,任何妳能看到的數據都可以進行抽取。在本文中,我們將重點介紹自動化抽取過程的程序,幫助妳在較短時間內收集大量數據。除了筆者前文提到的用例,抓取技術的用途還包括:SEO 追蹤、工作追蹤、新聞分析以及筆者的最愛——社交媒體的情感分析!

壹點提醒

在開啟 Web 抓取的探險之前,請確保自己了解相關的法律問題。許多網站在其服務條款中明確禁止對其內容進行抓取。例如,Medium 網站就寫道:“遵照網站 robots.txt 文件中的規定進行的爬取操作(Crawling)是可接受的,但是我們禁止抓取(Scraping)操作。”對不允許抓取的網站進行抓取可能會使妳進入他們的黑名單!與任何工具壹樣,Web 抓取也可能用於復制網站內容之類的不良目的。此外,由 Web 抓取引起的法律訴訟也不在少數。

設置代碼

在充分了解小心行事的必要之後,讓我們開始學習 Web 抓取。其實,Web 抓取可以通過任何編程語言實現,在不久之前,我們使用 Node 實現過。在本文中,考慮到其簡潔性與豐富的包支持,我們將使用 Python 實現抓取程序。

Web 抓取的基本過程

當妳打開網絡中的某個站點時,就會下載其 HTML 代碼,由妳的 web 瀏覽器對其進行分析與展示。該 HTML 代碼包含了妳所看到的所有信息。因此,通過分析 HTML 代碼就能得到所需信息(比如價格)。妳可以使用正則表達式在數據海洋中搜索妳需要的信息,也可以使用函數庫來解釋 HTML,同樣也能得到需要數據。

在 Python 中,我們將使用壹個名為靚湯(Beautiful Soup)的模塊對 HTML 數據進行分析。妳可以借助 pip 之類的安裝程序安裝之,運行如下代碼即可:

pip install beautifulsoup4

或者,妳也可以根據源碼進行構建。在該模塊的文檔說明頁,可以看到詳細的安裝步驟。

安裝完成之後,我們大致會遵循以下步驟實現 web 抓取:

向 URL 發送請求

接收響應

分析響應以尋找所需數據

作為演示,我們將使用筆者的博客 /').read()

接下來,將響應傳給之前安裝的模塊:

from bs4 import BeautifulSoup#making the soup! yummy ;)soup = BeautifulSoup(webpage, "html5lib")

請註意,此處我們選擇了 html5lib 作為解析器。根據 BeautifulSoup 的文檔,妳也可以為其選擇不同的解析器。

解析 HTML

在將 HTML 傳給 BeautifulSoup 之後,我們可以嘗試壹些指令。譬如,檢查 HTML 標記代碼是否正確,可以驗證該頁面的標題(在 Python 解釋器中):

>>> soup.title<title>Transcendental Tech Talk</title>>>> soup.title.text

u'Transcendental Tech Talk'

>>>

接下來,開始抽取頁面中的特定元素。譬如,我想抽取博客中文章標題的列表。為此,我需要分析 HTML 的結構,這壹點可以借助 Chrome 檢查器完成。其他瀏覽器也提供了類似的工具。

使用 Chrome 檢查器檢查某個頁面的 HTML 結構

如妳所見,所有文章標題都帶有 h3 標簽與兩個類屬性:post-title 與 entry-title 類。因此,用 post-title類搜索所有 h3 元素就能得到該頁的文章標題列表。在此例中,我們使用 BeautifulSoup 提供的 find_all 函數,並通過 class_ 參數確定所需的類:

>>> titles = soup.find_all('h3', class_ = 'post-title') #Getting all titles>>> titles[0].textu'\nKolkata #BergerXP IndiBlogger meet, Marketing Insights, and some Blogging Tips\n'>>>

只通過 post-title 類進行條目搜索應該可以得到相同的結果:

>>> titles = soup.find_all(class_ = 'post-title') #Getting all items with class post-title>>> titles[0].textu'\nKolkata #BergerXP

IndiBlogger meet, Marketing Insights, and some Blogging Tips\n'>>>

  • 上一篇:計算機二級是什麽水平
  • 下一篇:白俄羅斯國立大學的世界排名
  • copyright 2024編程學習大全網