本文的文字及图片来源于网络,仅供学习、交流使用,不具备任何商业用途,若有问题请及时联系咱们以做处理。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
其实小红书爬虫的抓取并非特别的难,关键在于思路以及使用的方法是什么。