使用Python爬蟲爬取小紅書完完整整的全過程

前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理。

以下文章來源於Python進擊者 ,作者kuls

Python爬蟲、數據分析、網站開發等案例教程視頻免費在線觀看

https://space.bilibili.com/523606542

小紅書

首先,我們打開之前大傢配置好的charles

我們來簡單抓包一下小紅書小程序(註意這裡是小程序,不是app)

不選擇app的原因是,小紅書的App有點難度,參照網上的一些思路,還是選擇瞭小程序

1、通過charles抓包對小程序進行分析

我們打開小紅書小程序,隨意搜索一個關鍵詞

按照我的路徑,你可以發現列表中的數據已經被我們抓到瞭。

但是你以為這就結束瞭?

不不不

通過這次抓包,我們知道瞭可以通過這個api接口獲取到數據

但是當我們把爬蟲都寫好時,我們會發現headers裡面有兩個很難處理的參數

“authorization”和”x-sign”

這兩個玩意,一直在變化,而且不知道從何獲取。

所以

2、使用mitmproxy來進行抓包

其實通過charles抓包,整體的抓取思路我們已經清晰

就是獲取到”authorization”和”x-sign”兩個參數,然後對url進行get請求

這裡用到的mitmproxy,其實和charles差不多,都是抓包工具

但是mitmproxy能夠跟Python一起執行

這就舒服很多啊

簡單給大傢舉例子

 def request(flow):
   print(flow.request.headers)

在mitmproxy中提供這樣的方法給我們,我們可以通過request對象截取到request headers中的url、cookies、host、method、port、scheme等屬性

這不正是我們想要的嗎?

我們直接截取”authorization”和”x-sign” 這兩個參數

然後往headers裡填入

整個就完成瞭。

以上是我們整個的爬取思路,下面給大傢講解一下代碼怎麼寫

其實代碼寫起來並不難

首先,我們必須截取到搜索api的流,這樣我們才能夠對其進行獲取信息

if 'https://www.xiaohongshu.com/fe_api/burdock/weixin/v2/search/notes' in flow.request.url:

我們通過判斷flow的request裡面是否存在搜索api的url

來確定我們需要抓取的請求

authorization=re.findall("authorization',.*?'(.*?)'\)",str(flow.request.headers))[0]
x_sign=re.findall("x-sign',.*?'(.*?)'\)",str(flow.request.headers))[0]
url=flow.request.url

通過上述代碼,我們就能夠把最關鍵的三個參數拿到手瞭,接下來就是一些普通的解析json瞭。

最終,我們可以拿到自己想要的數據瞭

如果你想要獲取到單篇數據,可以拿到文章id後抓取

"https://www.xiaohongshu.com/discovery/item/" + str(id)

這個頁面headers裡需要帶有cookie,你隨意訪問一個網站都可以拿到cookie,目前看來好像是固定的

最後,可以把數據放入csv

總結

其實小紅書爬蟲的抓取並不是特別的難,關鍵在於思路以及使用的方法是什麼。

到此這篇關於使用Python爬蟲爬取小紅書完完整整的全過程的文章就介紹到這瞭,更多相關Python爬取小紅書內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: