本章我們將學習網路爬蟲,其中包括學習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功能構建強大的工具以解決具有挑戰性的實際任務。
讀者將學到以下內容: