带着你们用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

 

总结

其实小红书爬虫的抓取并非特别的难,关键在于思路以及使用的方法是什么。

相关文章
相关标签/搜索