使用Python爬虫爬取小红书完完整整的全过程


Posted in Python onJanuary 19, 2021

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于Python进击者 ,作者kuls

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

小红书

首先,我们打开之前大家配置好的charles

我们来简单抓包一下小红书小程序(注意这里是小程序,不是app)

不选择app的原因是,小红书的App有点难度,参照网上的一些思路,还是选择了小程序

1、通过charles抓包对小程序进行分析

使用Python爬虫爬取小红书完完整整的全过程

我们打开小红书小程序,随意搜索一个关键词

使用Python爬虫爬取小红书完完整整的全过程

按照我的路径,你可以发现列表中的数据已经被我们抓到了。

但是你以为这就结束了?

不不不

使用Python爬虫爬取小红书完完整整的全过程

通过这次抓包,我们知道了可以通过这个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了。

最终,我们可以拿到自己想要的数据了

使用Python爬虫爬取小红书完完整整的全过程

如果你想要获取到单篇数据,可以拿到文章id后抓取

"https://www.xiaohongshu.com/discovery/item/" + str(id)

使用Python爬虫爬取小红书完完整整的全过程

这个页面headers里需要带有cookie,你随意访问一个网站都可以拿到cookie,目前看来好像是固定的

最后,可以把数据放入csv

使用Python爬虫爬取小红书完完整整的全过程

总结

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

到此这篇关于使用Python爬虫爬取小红书完完整整的全过程的文章就介绍到这了,更多相关Python爬取小红书内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python编程入门的一些基本知识
May 13 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
python如何建立全零数组
Jul 19 Python
python 如何设置守护进程
Oct 29 Python
python 自动识别并连接串口的实现
Jan 19 #Python
python爬取抖音视频的实例分析
Jan 19 #Python
python中的插入排序的简单用法
Jan 19 #Python
Python实现淘宝秒杀功能的示例代码
Jan 19 #Python
Python爬虫后获取重定向url的两种方法
Jan 19 #Python
详解Python+Selenium+ChromeDriver的配置和问题解决
Jan 19 #Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 #Python
You might like
咖啡与水的关系
2021/03/03 冲泡冲煮
PHP安装全攻略:APACHE
2006/10/09 PHP
初识laravel5
2015/03/02 PHP
php实现微信发红包
2015/12/05 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
jQuery链使用指南
2015/01/20 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
关于Python作用域自学总结
2019/06/10 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
xml有哪些解析技术?区别是什么
2016/04/26 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
化学专业自荐信
2014/05/28 职场文书
教师节倡议书
2014/08/30 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技