帶着你們用Python爬取小紅書,完完整整的全過程

前言

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

如下文章來源於Python進擊者 ,做者kuls小程序

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

https://space.bilibili.com/523606542

小紅書

首先,咱們打開以前你們配置好的charlescookie

咱們來簡單抓包一下小紅書小程序(注意這裏是小程序,不是app)網絡

不選擇app的緣由是,小紅書的App有點難度,參照網上的一些思路,仍是選擇了小程序app

一、經過charles抓包對小程序進行分析工具

 

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

 

按照個人路徑,你能夠發現列表中的數據已經被咱們抓到了。網站

可是你覺得這就結束了?url

不不不

 

經過此次抓包,咱們知道了能夠經過這個api接口獲取到數據

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

"authorization"和"x-sign"

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

因此

二、使用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

 

總結

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

相關文章
相關標籤/搜索