使用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 01 Python
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
Django 自动生成api接口文档教程
Nov 19 Python
pytorch中的inference使用实例
Feb 20 Python
python 画条形图(柱状图)实例
Apr 24 Python
python实现猜数游戏(保存游戏记录)
Jun 22 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
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
PDO::commit讲解
2019/01/27 PHP
关于JavaScript中的关联数组分析
2013/04/09 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
js实现随机点名功能
2020/12/23 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
python爬取网页转换为PDF文件
2018/06/07 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
《问银河》教学反思
2014/02/19 职场文书
员工趣味活动方案
2014/08/27 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
Go获取两个时区的时间差
2022/04/20 Golang