首頁>技術>

本章我們將學習網路爬蟲,其中包括學習Python中的BeautifulSoup庫,它用於從網站中提取資料。

本章包含以下主題。

什麼是網路爬蟲。資料提取。從維基百科網站提取資訊。1什麼是網路爬蟲

網路爬蟲是指從網站提取資料的技術,該技術可以將非結構化資料轉換為結構化資料。

網路爬蟲的用途是從網站提取資料,提取的資料可以儲存到本地檔案並儲存在系統中,也可以將其以表格的形式儲存到資料庫中。網路爬蟲使用HTTP或Web瀏覽器直接訪問全球資訊網(WWW)。網路爬蟲或機器人抓取網頁的過程是一個自動化流程。

抓取網頁的過程分為獲取網頁、提取資料。Web抓取程式可以獲取網頁,它是網路爬蟲的必需元件。在獲取網頁後,就需要提取網頁資料了。我們可以搜尋、解析,並將提取的資料儲存到表格中,然後重新整理格式。

2資料提取

本節我們學習資料提取。我們可以使用Python的BeautifulSoup庫進行資料提取。這裡還需要用到Python庫的Requests模組。

執行以下命令以安裝Requests和BeautifulSoup庫。

$ pip3 install requests$ pip3 install beautifulsoup4
2.1Requests庫

使用Requests庫可以易懂的格式在Python指令碼中使用HTTP,這裡使用Python中的Requests庫獲取網頁。Requests庫包含不同型別的請求,這裡使用GET請求。GET請求用於從Web伺服器獲取資訊,使用GET請求可以獲取指定網頁的HTML內容。每個請求都對應一個狀態碼,狀態碼從伺服器返回,這些狀態碼為我們提供了對應請求執行結果的相關資訊。以下是部分狀態碼。

200:表示一切正常並返回結果(如果有)。301:表示如果伺服器已切換域名或必須更改端點名稱,則伺服器將重定向到其他端點。400:表示使用者發出了錯誤請求。401:表示使用者未通過身份驗證。403:表示使用者正在嘗試訪問禁用的資源。404:表示使用者嘗試訪問的資源在伺服器上不可用。2.2BeautifulSoup庫

BeautifulSoup也是一個Python庫,它包含簡單的搜尋、導航和修改方法。它只是一個工具包,用於從網頁中提取所需的資料。

要在指令碼中使用Requests和BeautifulSoup模組,必須使用import語句匯入這兩個模組。現在我們來看一個解析網頁的示例程式,這裡將解析一個來自百度網站的新聞網頁。建立一個指令碼,命名為parse_web_page.py,並在其中寫入以下程式碼。

import requestsfrom bs4 import BeautifulSouppage_result = requests.get('https://www.news.baidu.com')parse_obj = BeautifulSoup(page_result.content, 'html.parser')print(parse_obj)

執行指令碼程式,如下所示。

現在我們將從類和標籤中提取資料。轉到Web瀏覽器,右擊要提取的內容並向下查詢,找到“檢查”選項,單擊它將獲得類名。在程式中指定這個類名,並執行指令碼。建立一個指令碼,命名為extract_from_class.py,並在其中寫入以下程式碼。

import requestsfrom bs4 import BeautifulSouppage_result = requests.get('https://www.news.baidu.com')parse_obj = BeautifulSoup(page_result.content, 'html.parser')top_news = parse_obj.find(class_='news-article__content')print(top_news)

執行指令碼程式,如下所示。

現在我們來看一個從特定標籤中提取資料的示例程式,此示例程式將從<a>標籤中提取資料。建立一個指令碼,命名為extract_from_tag.py,並在其中寫入以下程式碼。

import requestsfrom bs4 import BeautifulSouppage_result = requests.get('https://www.news.baidu.com/news')parse_obj = BeautifulSoup(page_result.content, 'html.parser')top_news = parse_obj.find(class_='news-article__content')top_news_a_content = top_news.find_all('a')print(top_news_a_content)

執行指令碼程式,如下所示。

3從維基百科網站抓取資訊

本節我們將學習一個從維基百科網站獲取舞蹈種類列表的示例程式,這裡將列出所有古典印度舞蹈。建立一個指令碼,命名為extract_from_wikipedia.py,並在其中寫入以下程式碼。

import requestsfrom bs4 import BeautifulSouppage_result = requests.get('https://en.wikipedia.org/wiki/Portal:History')parse_obj = BeautifulSoup(page_result.content, 'html.parser')h_obj = parse_obj.find(class_='hlist noprint')h_obj_a_content = h_obj.find_all('a')print(h_obj)print(h_obj_a_content)

執行指令碼程式,如下所示。

student@ubuntu:~/work$ python3 extract_from_wikipedia.py

輸出如下。

在第17章中,我們將學習統計資訊的收集和報告。其中將學習NumPy模組,資料視覺化以及使用plots、graphs和charts顯示資料。

5問題

1.什麼是網路爬蟲?

2.什麼是網路抓取工具?

3.我們可以從需要登入的網頁抓取資料嗎?

4.我們可以爬取Twitter網站資料嗎?

5.我們是否可以爬取Java指令碼頁面資料?如果可以,怎麼做?

本文摘自:《寫給系統管理員的Python指令碼程式設計指南》

[印度] 甘尼什·桑吉夫·奈克(Ganesh,Sanjiv,Naik) 著,張成悟 譯

《寫給系統管理員的Python指令碼程式設計指南》([印度]甘尼什·桑吉夫·奈克(Ganesh,Sanjiv,Naik))【摘要 書評 試讀】- 京東圖書​item.jd.com

本書首先介紹Python的安裝,並講解程式設計基礎知識。然後,本書將側重於解析整個開發過程,從配置到準備再到構建 不同的工具,包括IT管理員的日常活動(文字處理、正則表示式、檔案存檔和加密)、網路管理(套接字程式設計、電子郵 件處理、使用Telnet/SSH遠端控制裝置以及SNMP/DHCP等協議)、建立圖形使用者介面、網站處理(Apache日誌 檔案處理、SOAP和REST API通訊、Web抓取),以及資料庫管理(MySQL和相似資料庫資料管理、資料分析和報告)。學完本書,讀者將能夠使用Python功能構建強大的工具以解決具有挑戰性的實際任務。

讀者將學到以下內容:

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 軟體開發該採用傳統專案管理還是敏捷專案管理?