天天看點

Python爬取豆瓣+資料可視化

前段時間應我姐邀請,看了一下Python爬蟲。不得不說Python的文法确實簡潔優美,可讀性強,比較接近自然語言,非常适合程式設計的初學者上手。

在開始之前還是先介紹下什麼是爬蟲:

網絡爬蟲(英語:web crawler),也叫網絡蜘蛛(spider),是一種用來自動浏覽網際網路的網絡機器人。 -- 維基百科

爬蟲是一種程式或者腳本,用來替代人工浏覽網頁并從中提取資訊,通常将提取的資訊存儲然後對其進行分析,進而擷取有價值的資訊。

爬蟲也不是什麼新鮮事物,可以說隻要是程式設計語言幾乎都能做到,而Python因為其簡潔的文法和豐富的第三方庫可以快速高效的編寫爬蟲,對于初學者可以說相當友好。接下來以爬取豆瓣電影TOP250頁面為例說明如何用Python實作爬蟲和資料可視化。

一、HTTP請求

導入第三方庫​​requests​​,調用requests.get()方法向​​豆瓣電影TOP250​​頁面發起GET請求,拿到響應的HTML。

二、資料提取

浏覽器通路​​豆瓣電影TOP250​​頁面并進入開發者模式複制要抓取節點的XPath。導入第三方庫​​lxml​​的etree對象,調用etree.HTML(HTML)将HTML轉換成element對象,然後使用element.xpath(XPath)方法拿到抓取的節點的文本(PS:也可以使用正則比對文本)。

三、資料存儲

導入第三方庫​​openpyxl​​,調用openpyxl.Workbook()方法擷取一個新的工作簿workbook,寫入workbook.active=sheet獲得一個工作表的引用sheet,為excel表指定位置添加資料:sheet["A1"]=value,最後使用workbook.save(”excel表名“)儲存資料,這裡不用資料庫是為了友善沒有程式設計基礎也能檢視資料。

四、繼續爬取

根據爬取頁面的URL參數重複以上步驟,如豆瓣電影TOP250有兩個參數start和filter,start表示頁面的電影排行從TOP幾的後一個開始,每個頁面有25個電影,也就是說第一個頁面參數start=0,第二個頁面參數start=25,filter為過濾,暫時不用管,請求下一個頁面時GET請求的參數start+25即可。

五、資料可視化

調用openpyxl.load_workbook("excel表名")方法擷取存放資料的excel表,寫入workbook.active=sheet獲得一個工作表的引用,擷取excel表指定位置的資料:data=sheet["A1"].value。然後導入第三方庫​​pyecharts​​,并根據​​文檔​​調用合适的API生成圖表實作資料可視化。

建立一個項目Crawler,安裝使用的第三方庫:

接下來在項目目錄下建立檔案html_parser.py:

該子產品封裝了解析豆瓣電影TOP250頁面并提取資料的方法。

然後同樣建立檔案excel_handler.py:

該子產品封裝了存儲和讀取excel表的方法。

接下來在mian.py中寫入:

main.py中的兩個函數分别實作爬取豆瓣電影TOP250并存儲資料和讀取資料進行資料可視化操作,具體的過程已在注釋中詳細标注。