本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,若有問題請及時聯繫咱們以做處理。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
其實小紅書爬蟲的抓取並非特別的難,關鍵在於思路以及使用的方法是什麼。