作為數據科學家,收集數據的最有效方法之一是借助Web抓取。網頁抓取是一種將數據從Web捕獲到我們本地計算機中的技術,以對它執行某些數據分析或數據可視化操作,以從該數據中獲得有用的見解,也稱為Web收集或數據提取。在本文中,將借助于兩個名為Requests和bs4(Beautiful Soup)的金色庫來抓取網絡上的信息。選擇這兩個庫的原因是它們比其他可用庫更強大和靈活。
先決條件
HTML標簽和CSS選擇器的基礎知識是必需的。
從Web捕獲數據始于向Web發送請求要從哪個網站捕獲數據。該任務是在“請求”模塊的幫助下完成的。
要向網站提出請求,首先我們需要在python中導入請求模塊。它不是python中的預內置模塊。我們需要在pip的幫助下安裝該軟件包。
>>>導入請求#模塊成功導入。
#提出要求
>>>響應= request.get
#響應變量將包含該請求對象的響應。
要檢查請求對象的狀態,我們需要在請求模塊中使用status_code屬性。
>>> response.status_code
如果狀態代碼值的結果為200,則您從網站獲得了成功的響應。否則,您將從網頁中得到不好的響應。問題可能出在Web URL或服務器問題上。
請求類型
借助請求模塊,主要有六種類型的請求是可能的。
1. get()請求
2. post()請求
3. put()請求
4. 刪除請求
5. head()請求
6. options()請求
向網頁發出任何形式的請求的語法是-
requests.methodName('url')
但是,最流行的向網頁發出請求的方法僅使用get()和post()方法。
要發送任何類型的敏感數據以及諸如登錄憑據等URL之類的URL,則post()請求是更可取的,因為HTTP get()請求不會為已發送到網頁的請求提供任何安全性。
R = requests.post
回應結果
我們的請求的響應內容是通過text屬性獲得的。
>>> response.text
由此可以得出結論,我們將網頁內容下載到了本地計算機上。為了使內容更加靈活和有用,我們需要借助Beautiful Soup庫。該庫可幫助我們從可用數據中獲得有用的見解。
#導入漂亮的湯庫
>>> import bs4
為了使原始HTML數據更加美觀,我們需要在某些解析器的幫助下解析內容。經常使用的解析器是-
1. xml文件
2. HTML5lib
3. XML解析器
4. HTML.parser
但是最靈活和最受歡迎的是lxml解析器。它可以非常快速有效地解析數據。
>>> soup_obj = bs4.BeautifulSoup(response.text,'lxml')
#soup_obj將使我們獲取所需的結果
#為了使我們之前的數據更容易理解,我們將在湯匙上使用prettify()
>>> soup_obj.prettify()
因此,最后,我們又向前邁了一步。數據提取從此處開始-
要提取網頁的名稱,我們需要使用選擇器以及適當的HTML標簽來獲得結果
>>> soup_obj.select('title')[0] .getText()
要從該網頁提取所有鏈接,您需要找到該頁面中的所有錨標記并將結果存儲到變量中。借助for循環迭代,它完全可以打印結果
>>> links = soup_obj.find_all('a')
#find_all()將有助于獲取所選標簽的所有詳細信息。
>>>對于鏈接中的鏈接:
... print(link.get('href'))
...
#get()用于從標記中提取特定內容
這是一個從網頁獲取鏈接的簡單示例。如果您想從網頁中提取其他數據,請選擇與您的內容相關的適當標簽,并在湯對象的幫助下獲取結果。最初,這感覺很困難,但是當您在使用它時,絕對可以在一分鐘內爬出任何類型的網站。
免責聲明
未經管理員許可,請勿執行網站網頁抓取。可能導致非法活動。公司中的數據科學家通常會在自己的網頁和業務上進行網絡抓取,而他們并未在其他公司網站上執行任何非法操作。所以要小心如果有任何原因造成您損壞,如果發生違法活動概不負責。
我在本教程中使用的網頁可以隨意刮取,因此完全沒有問題。使用此類網站來學習或提高您的技能。
通過上述介紹,如何使用Python進行Web爬網相信大家已經清楚了吧,想了解更多關于Python的信息,請繼續關注中培偉業。