使用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爬取小紅書內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!