這幾步讓你輕鬆用Python實現Web抓取!

點擊上方關注,All in AI中國

作者:Ann Mohan Kunnath

因特網上有許多非結構化數據。一旦收集並轉換成結構化、有意義的格式,這些數據就可以用來執行分析並獲得富有成效的見解。在本教程中,我將演示如何從因特網上收集這些數據,並對其進行處理,以使其具有結構化的格式。這個過程被稱為網頁抓取。它也被稱為屏幕抓取、網頁獲取或網頁數據提取。

這幾步讓你輕鬆用Python實現Web抓取!

網頁抓取在商業中有很多應用。市場情緒分析、客戶情緒分析和競爭定價是其中的幾個例子。

在這篇文章中,我將演示如何使用Python在web上抓取partments.com。

步驟1:在對一個網站進行抓取之前,我們需要看看他們的robots.txt。

因為這個文件會告訴我們網站是允許抓取還是不允許抓取。我們要做的就是找到robots.txt,輸入基本url並添加"/robots.txt"。例如,如果我們想爬partments.com,我們要輸入https:/www.partments.com/robots.txt。

如果robots.txt允許完全訪問,則如下所示:

用戶代理:*

不允許:

如果robots.txt阻止所有訪問,則包含以下內容:

用戶代理:*

不允許:/

如果robots.txt允許部分訪問,則包含以下內容,其中section表示不需要爬行的部分:

用戶代理:*

不允許:/section/

就partments.com而言,robots.txt包含以下內容:

這幾步讓你輕鬆用Python實現Web抓取!

上圖意味著我們可以抓取站點上的所有部分,除了在url中標有partments.com/services/的部分。

步驟2:導入必要的庫:

這幾步讓你輕鬆用Python實現Web抓取!

在本例中,Requests庫用於獲取html內容,BeautifulSoup用於解析html,pandas用於創建數據幀(dataframe)並寫入csv。

步驟3:將所抓取變量的url存儲起來。

在本例中,我轉到partments.com網站,在搜索框中輸入辛辛那提(Cincinnati),然後按回車鍵,得到的東西如下面的屏幕截圖所示。

這幾步讓你輕鬆用Python實現Web抓取!

這使我的url改為https:/www.partments.com/Cincinnati-oh/ 如下面的截圖所示,這將是我的默認地(網)址。

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

步驟4:從頁面中獲取html內容。這裡需要使用requests庫完成。

這幾步讓你輕鬆用Python實現Web抓取!

步驟5:解析html。這裡需要應用到BeautifulSoup。

這幾步讓你輕鬆用Python實現Web抓取!

步驟6:提取頁面第一頁和最後一頁的頁碼。這樣做對我們而言非常重要,可以方便我們在網站上的頁面上動態爬行。在這裡所要做的只是單擊頁面末尾的分頁部分,如下面的圖片所示,右鍵單擊inspect。

這幾步讓你輕鬆用Python實現Web抓取!

在單擊inspect時,我們可以看到頁碼位於div id"分頁"內,而它又位於div id"placardContainer"內,如下所示。

這幾步讓你輕鬆用Python實現Web抓取!

下面的代碼是使用了這些標記來提取起始頁碼和結束頁碼的。

這幾步讓你輕鬆用Python實現Web抓取!

步驟7:創建一個空列表來補充我們稍後獲得的所有內容。

這幾步讓你輕鬆用Python實現Web抓取!

步驟8:從頁碼中創建頁面鏈接,在頁面中爬行並從相應的標記中提取內容。我們通過for循環確保爬行過每個頁面。

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

步驟9:對網頁中(所出租房屋的)名字和位置這些主要信息進行抓取。右鍵單擊名字這一欄進行檢查。在下面的(代碼)截圖中,我們可以看到,在所有權方面"辛辛那提的威廉斯堡"屬於"placardHeader"這一類,位置信息位於代碼中表示名字的下方。稍後我們將使用藍色矩形中所標記的代碼來提取它們具體的信息。

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

步驟10:我們現在要對是否已出租給他人,有幾張床和聯繫電話這些次要信息進行提取。通過對相關代碼的檢查,我們可以看到它們都屬於次要信息"placardContent"下,如下面的截圖所示。稍後我們將使用藍色矩形中所標記的代碼來提取它們具體的信息。

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

步驟11:啟動for循環(循環從所有權開始,當再循環到所有權時結束),並對名字、地址、價格、有幾張床和聯繫電話這些有價值的信息進行提取。我們通過之前對這些值做出的標記來提取它們的信息。在步驟9和步驟10的截圖中,這些信息都通過藍色矩形框所標出。

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

這幾步讓你輕鬆用Python實現Web抓取!

步驟12:使用該列表創建一個數據文件,並將該列表寫入CSV文件

這幾步讓你輕鬆用Python實現Web抓取!

步驟13:現在,我們可以在工作目錄中找到Output.csv文件,它將以結構化的方式獲得所有信息。下面是CSV前5行的截圖。

這幾步讓你輕鬆用Python實現Web抓取!

做完了!意猶未盡的你請點:

https://github.com/annmohankunnath/Webscraping/blob/master/Webscraping.ipynb

這幾步讓你輕鬆用Python實現Web抓取!


分享到:


相關文章: