小红书,各方位进行爬虫

首先下载Fidder .配置和手机的链接,。
https://www.telerik.com/download/fiddler/fiddler4
里面下载,具体的配置就不多说了
手机链接 上,小红书app下架了,我这里就从微信小红书小程序开始入手。
【小红书,各方位进行爬虫】
小红书,各方位进行爬虫
文章图片


这是Fidder的程序界面。
这边手机端 打开微信,打开小红书小程序, 然后点击一个视频 播放、

小红书,各方位进行爬虫
文章图片


我手机端点了播放之后,我看见了我经常 看到的movie标志表示抓到了

小红书,各方位进行爬虫
文章图片

然后我们去Fidder里面获取 请求头这些,利用 代码实现这一功能

小红书,各方位进行爬虫
文章图片

小红书,各方位进行爬虫
文章图片

到这里,我发现这是加密的。我们先试着看看他sign的是时效性的,还是当时就有的 ,
这边老规矩,先打开谷歌浏览器,试试模拟手机能不能打开网页,获取 更多的信息
http://v.xiaohongshu.com/aaea3df9d9d79d7067a2e4959479148b25712e5e?sign=1cc3be3eb66f6fd513f42c31c1dd0a46&t=5d77c880
然后比较尴尬的是竟然直接打开了。

竟然直接打开了。。,调转路线,看看能不能抓视频接口,而且url地址还是加密的。返回Fidder,看看能不恩能够把视频接口,或者用户的视频都抓下来。发现只能抓取当前播放视频,苹果手机没有APP,辗转安卓手机连接Fidder继续试。!发觉APP 抓不到数据,然后 没辙,再退一步,我去找看看 小红书有没网页版的,然后找到了
url如下
https://www.xiaohongshu.com/explore
经过一番 测试,找到了小红书的接口, 也获得了小红书视频和图片的区分方法,话不多说,开始敲代码
小红书,各方位进行爬虫
文章图片

然后试了一下抓取的接口,返回401,我感觉到了我遇到麻烦了。
容我考虑 一番
这边先不管别人。敲代码抓取,带着COOKies的就是不一样,返回数据了
上图
小红书,各方位进行爬虫
文章图片


这边我看了下,只是视频稍微有难度。所以这边我就整理视频吧。

经过一番折腾已经拿下视频,并整理成想要的 类型字典,

import requests import json import re#api地址 url = 'https://www.xiaohongshu.com/fe_api/burdock/v1/homefeed/notes?page_size=20&oid=recommend&page=1'headers = { 'Accept':'application/json, text/plain, */*', 'Accept-Encoding':'gzip, deflate, br', 'Accept-Language':'zh-CN,zh; q=0.8', 'Connection':'keep-alive', 'Cookie':'xhsTrackerId=6e0e0a57-717f-4d5e-cd99-613d9a5ca9c4; extra_exp_ids=; xhs_spid.5dde=eff4c944cdbf9565.1568039581.1.1568040423.1568039581.acafa140-1747-4aee-acdc-c58603b59b4f; xhs_spses.5dde=*', 'Host':'www.xiaohongshu.com', 'Referer':'https://www.xiaohongshu.com/explore', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36', 'X-Sign':'X6c1882474eb3d460da315588395744b6' }r = requests.get(url,headers=headers) #转成字典 a_json = json.loads(r.text) redbook_item={} redvideo_item={} #获取有用数据的value a1_json = a_json['data'] for i in a1_json: # print(i['user']['nickname']) #如果类型为normal就是图片,我们把他加入图片字典 if i['type'] == 'normal': #标题 redbook_item['title'] = i['title'] #作者名字 redbook_item['nickname'] = i['user']['nickname'] #链接 redbook_item['link']= i['link'] print(redbook_item) #如果类型不为normal,我们加入视频字典 else: #标题 redvideo_item['title']= i['title'] #作者名字 redvideo_item['nickname'] = i['user']['nickname'] #视频链接,因为被加密了,用正则提取最后一个数据,然后拼接url redvideo_item['link']= "https://www.xiaohongshu.com/discovery/item/"+re.split('/',i['link'])[-1] print(redvideo_item)


打印结果如下图:
小红书,各方位进行爬虫
文章图片

项目到此结束,如有啥不懂的,可以问我

    推荐阅读