使用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利用hook技术破解https的实例代码
Mar 25 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
详解Python的Flask框架中的signals信号机制
Jun 13 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python实现远程控制电脑
May 23 Python
解决python gdal投影坐标系转换的问题
Jan 17 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 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
全国中波电台频率表
2020/03/11 无线电
PHP实现分页的一个示例
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
详解jquery和vue对比
2019/04/16 jQuery
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python对象体系深入分析
2014/10/28 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
.NET面试10题
2014/02/24 面试题
总经理工作职责范文
2014/03/14 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
答谢酒会主持词
2015/07/02 职场文书
2016高考寄语集锦
2015/12/04 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers