小紅書很難爬?最新爬取方法教給你啦~

點擊上方“Python爬蟲與數據挖掘”,進行關注

回覆“書籍”即可獲贈Python從入門到進階共10本電子書

莫學武陵人,暫遊桃源裏。

Python進擊者

184篇原創文章

前言

大家好,我是Kuls。

之前寫的那篇App抓包軟件charles的配置說過,超過30在看,馬上更下一篇。有讀者問我怎麼爬App,我手把手教了他(多圖警告)

所以加班加點給大家寫了今天這篇文章。

本文將會帶着大家完完整整的爬取小紅書的全過程


小紅書

需要做的前提工作就是裝配好mitmproxy

具體的配置過程,我建議大家參照崔大寫的來進行安裝

https://zhuanlan.zhihu.com/p/33747453

首先,我們打開之前大家配置好的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


總結

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

本期的文章就到這裏了,如果本期在看超過40,馬上出下一篇乾貨!

我們下期見~

------------------- End -------------------

往期精彩文章推薦:

歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持

想加入Python學習羣請在後臺回覆【入羣

萬水千山總是情,點個【在看】行不行

/今日留言主題/

隨便說一兩句吧~~

本文分享自微信公衆號 - Python爬蟲與數據挖掘(crawler_python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章