天天看點

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

前天給大家分享了

如何利用Python網絡爬蟲爬取微信朋友圈資料的上篇

(理論篇),今天給大家分享一下代碼實作(實戰篇),接着上篇往下繼續深入。

一、代碼實作

1、修改Scrapy項目中的items.py檔案。我們需要擷取的資料是朋友圈和釋出日期,是以在這裡定義好日期和動态兩個屬性,如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

2、修改實作爬蟲邏輯的主檔案moment.py,首先要導入子產品,尤其是要主要将items.py中的WeixinMomentItem類導入進來,這點要特别小心别被遺漏了。之後修改start_requests方法,具體的代碼實作如下圖。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

3、修改parse方法,對導航資料包進行解析,代碼實作稍微複雜一些,如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

l需要注意的是從網頁中擷取的response是bytes類型,需要顯示的轉為str類型才可以進行解析,否則會報錯。

l在POST請求的限定下,需要構造參數,需要特别注意的是參數中的年、月和索引都需要是字元串類型的,否則伺服器會傳回400狀态碼,表示請求參數錯誤,導緻程式運作的時候報錯。

l在請求參數還需要加入請求頭,尤其是Referer(反盜鍊)務必要加上,否則在重定向的時候找不到網頁入口,導緻報錯。

l上述的代碼構造方式并不是唯一的寫法,也可以是其他的。

4、定義parse_moment函數,來抽取朋友圈資料,傳回的資料以JSON加載的,用JSON去提取資料,具體的代碼實作如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

5、在setting.py檔案中将ITEM_PIPELINES取消注釋,表示資料通過該管道進行處理。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

6、之後就可以在指令行中進行程式運作了,在指令行中輸入scrapy crawl moment -o moment.json,之後可以得到朋友圈的資料,在控制台上輸出的資訊如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

7、爾後我們得到一個moment.json檔案,裡面存儲的是我們朋友圈資料,如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

8、嗯,你确實沒有看錯,裡邊得到的資料确實讓人看不懂,但是這個并不是亂碼,而是編碼的問題。解決這個問題的方式是将原來的moment.json檔案删除,之後重新在指令行中輸入下面的指令:scrapy crawl moment -o moment.json -s FEED_EXPORT_ENCODING=utf-8,此時可以看到編碼問題已經解決了,如下圖所示。

如何利用Python網絡爬蟲爬取微信朋友圈動态--附代碼(下)

下一篇文章,小編帶大家将抓取到的朋友圈資料進行可視化展示,敬請關注~~