隨著網絡技術的發展,數據變得越來越值錢,如何有效提取這些有效且公開的數據並利用這些信息變成了一個巨大的挑戰。從而爬蟲工程師、數據分析師、大數據工程師的崗位也越來越受歡迎。爬蟲是 Python 應用的領域之一。
有 Python 基礎對於學習 Python 爬蟲具有事半功倍的效果。就像學英語一樣,一個對英語一概不通的人聽完別人讀英語,自己也能讀出來,但要把英語讀好,學好音標非常有必要。
一、Python 開發環境的搭建
Python 目前流行 Python 2.x 與 Python 3.x 兩個版本,由於 Python 2 只會維護到 2020 年,因此這裡建議使用 python 3 來作為編程環境。
下載 Python:
默認安裝即可,如下圖所示。
網絡爬蟲:是指按照一定的規則,自動抓取全球資訊網信息的程序或者腳本,從中獲取大量的信息。
爬蟲的作用主要有以下幾點:
市場分析:電商分析、商圈分析、一二級市場分析等;
市場監控:電商、新聞、房源監控、票房預測、股票分析等;
商機發現:招投標情報發現、客戶資料發掘、企業客戶發現等;
數據分析:對某個 App 的下載量跟蹤、用戶分析、評論分析,虛擬貨幣詳情分析……
三、爬蟲基礎知識補充1. 網址的構成
網站的網址一般由協議+域名+加頁面構成,如 https://auction.jd.com/home.html,域名一般是固定不變的,能改變的則是頁面(home.html),所以在爬蟲的過程中我們所需要解析的就是自己編寫的不同頁面的 URL,只有解析出各個不同頁面的 URL 入口,我們才能開始爬蟲(爬取網頁)。
2. 網頁的基本構成
一般來說一個網頁的頁面主要有 HTML、CSS、JavaScript 構成,這裡我們可以打開任意一個網頁右擊查看網頁原始碼。
3. 常見的加載模式
學習爬蟲有必要了解網頁常見的兩種加載模式(後續爬蟲過程中,經常需要用到)。
4. 網頁的請求過程
打開瀏覽器,地址欄輸 baidu.com,按下回車,到用戶看到內容,主要經歷了如下步驟:
(1)開始進行域名解析
首先瀏覽器自身搜 DNS 緩存,搜 baidu.com 有沒有緩存有沒有過期,如果過期就結束,其次瀏覽器會搜索作業系統自身的 DNS 緩存並讀取本地的 host 文件,瀏覽器發起一個 DNS 系統調用。
(2)瀏覽器獲得 baidu.com 域名對應的 IP 地址後,發起 HTTP 三次握手
(3)建立 TCP/IP,瀏覽器就可以向伺服器發送 HTTP 請求
TCP/IP 連結建立起來後,瀏覽器就可以向伺服器發送 HTTP 請求。伺服器接收到請求之後就會對請求做相應的處理,並將結果返回給瀏覽器。
(4)瀏覽器拿到資源之後對頁面進行加載、解析、渲染,最後呈現給用戶
5.谷歌瀏覽器之 HTTP 請求分析
打開 Chrome 開發工具(這裡我們以打開百度網址為例),如下圖:
Elements(元素麵板):使用「元素」面板可以通過自由操縱 DOM 和 CSS 來重演您網站的布局和設計。
Console(控制臺面板):在開發期間,可以使用控制臺面板記錄診斷信息,或者使用它作為 shell,在頁面上與 JavaScript 交互。
Sources(原始碼面板):在原始碼面板中設置斷點來調試 JavaScript ,或者通過 Workspaces(工作區)連接本地文件來使用開發者工具的實時編輯器。
Network(網絡面板):從發起網頁頁面請求 Request 後得到的各個請求資源信息(包括狀態、資源類型、大小、所用時間等),並可以根據這個進行網絡性能優化。
接下來我們首先需要安裝 Python 中常用開發軟體 Pycharm IDE,安裝只需要默認選擇即可。
(1)三方包的安裝。
第一種安裝庫模塊的方式為:打開 Pycharm IDE,選擇 file-Settings,如下圖所示:
這時我們選擇右方的"+"符號,如下圖所示:
由於接下來需要進行爬取豆瓣短評的數據,所以我們首先需要安裝一些三方包和模塊。安裝 openpyxl、lxml、requests、pandas 等,安裝這些庫模塊的時候,我們只需要在搜索框中搜索對應的庫模塊就可以,然後選擇左下方的 Install Package 即可,等待安裝完畢。
第二種安裝庫模塊的方式為:打開 cmd 命令行,輸入 pip install requests 命令,出現 Successfully installed,則表明該模塊安裝成功。
爬取豆瓣短評需要用的知識點如下:
使用 Requests 爬取豆瓣短評;
使用 Xpath 解析豆瓣短評;
使用 pandas 保存豆瓣短評數據。
(1)Requests 庫詳解
Requests 是唯一的一個非轉基因的 Python HTTP 庫,人類可以安全享用,Requests 庫是 Python 爬蟲中的利器,使得我們爬蟲更加方便,快速,它可以節約我們大量的工作,完全滿足 HTTP 測試需求,所以我們安裝這個庫以爬取網頁中的數據。
使用 Requests 抓取網頁數據的一般步驟如下:
導入 Requests 庫;
輸入 URL;
使用 Get方法;
列印返回文本;
拋出異常。
(2)Xpath 解析
XPath 即為 XML 路徑語言(XML Path Language),它是一種用來確定 XML 文檔中某部分位置的語言,在開發中經常被開發者用來當作小型查詢語言,XPath 用於在 XML 文檔中通過元素和屬性進行導航。
使用 Xpath 解析網頁數據的一般步驟為:
獲取 Xpath 的方法直接從瀏覽器中複製即可:首先在瀏覽器上定位到需要爬取的數據,右鍵,點擊「檢查」,在「Elements」下找到定位到所需數據,右鍵 —> Copy —> Copy Xpath,即可完成 Xpath 的複製(事例如下圖)。
(3)pandas 講解
pandas 是數據分析工作變得更加簡單的高級數據結構和操作工具,主要使用 pandas 保存數據。
導入 pandas 代碼如下:
pandas 保存數據到 Excel,其步驟為:導入相關的庫;將爬取到的數據儲存為 DataFrame 對象;從 Excel 文件中讀取數據並保存。
事例代碼如下:
通過上述對三方包的安裝、Requests、Xpath 解析、pandas 保存數據介紹,接下來我們就正式開始對編寫豆瓣短評數據代碼編寫。
單頁豆瓣惡意圖書評論數據的爬取代碼,如下:
單頁數據的爬取 Pycharm IDE 圖片截圖,如下:
爬取結束之後,已經自動保存為 Excel 表格,分別是 comment.xlsx、comment2.xlsx。
單頁抓取效果如下圖:
多頁抓取效果如下圖:
以上關於 Python 爬蟲內容就講到這裡,如果想學習完整的 Python 爬蟲過程
識別二維碼
免費試讀
《Python 爬蟲和數據分析實戰》
想要學習 Python 和爬蟲的同學點擊 閱讀原文 即可~