使用Python爬虫爬取小红书完完整整的全过程
作者:松鼠爱吃饼干 发布时间:2022-03-23 05:12:44
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
以下文章来源于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
总结
其实小红书爬虫的抓取并不是特别的难,关键在于思路以及使用的方法是什么。
来源:https://www.cnblogs.com/hhh188764/archive/2021/01/19/14297882.html


猜你喜欢
- 1、介绍在爬虫中经常会遇到验证码识别的问题,现在的验证码大多分计算验证码、滑块验证码、识图验证码、语音验证码等四种。本文就是识图验证码,识别
- 在日常的前端开发工作中,我们会经常的与HTML、javascript、css等语言打交道,和一门真正的语言一样,计算机语言也有它的字母表、语
- 关于distributedsampler函数的使用1.如何使用这个分布式采样器在使用distributedsampler函数时,观察loss
- 前言:不知道有多少同学跟我一样,最初接触编程的动机就是为了自己做个游戏玩?今天要给大家分享的是一个 pygame 写的“
- Elastic Security 为分析人员提供了预防,检测和响应威胁的手段。 该解决方案解决了SIEM,endpoint,威胁搜寻等安全用
- 在开发数据库应用中,经常会遇到处理时间的问题,如查询指定时间的记录等。下面就这些常见的问题,结合自己的一些经验,和大家探讨一下这类问题。首先
- python 绘制拟合曲线并加指定点标识import osimport numpy as npfrom scipy import logfr
- 1. 读取CSV文件 csv.reader()该方法的作用相当于就是通过 ',' 分割csv格式的数据,并将分割好的每行数据
- python要知道怎么用好编译器。当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码
- 首先选择操作系统。由于ASP属于MS(Microsoft)的东西,所以我们要选择MS的操作系统,Windows 98以上就可以(
- vuex的理论知识就不多提了,官网上已经有明确的讲解。用一个简单的例子来描述一下基本的用法:第一步:npm install vuex –sa
- ah!其实没有标题说的那么严重!不过下面可是我们开发产品初期的一些血淋淋的案例,更多的安全威胁可以看看北北同学的《python hack》P
- 几个利用背景结合a:hover做的小东东,希望对大家有所帮助。<!DOCTYPE html PUBLIC "-//W3C//
- Python3:字典中的items()函数一、Python2.x中items(): 和之前一样,本渣渣先贴出来python中help的帮助
- 中国,美国,英国3国时间js同步动态显示,对于做企业网站的朋友相信用的到,特别是做英文网站的朋友,加上这一段代码会给你的网站增色不少!本文j
- 如何在本地机器上创建缓存?用法到是很简单,只需先创建Stream对象的实例,然后开始写入数据即可: Dim str&n
- 前言:上一篇博客我用AOP+AbstractRoutingDataSource实现了MySQL读写分离,自己写代码实现判断该使用哪个数据源挺
- 本文实例为大家分享了python实现图片转字符画的具体代码,供大家参考,具体内容如下源码(注释很详细):# -*- coding=utf-8
- 以下内容都是针对Pytorch 1.0-1.1介绍。很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解
- 最近写了一些python3程序,四处能看到bytes类型,而它并不存在于python2中,这也是python3和python2显著区别之一。