【采集软件】用Python开发的小红薯详情批量采集工具,含笔记正文、转评赞藏等

news2024/9/22 13:41:03

一、背景介绍

1.1 爬取目标

爬取目标
用python开发的爬虫采集软件,可自动按笔记链接抓取笔记的详情数据。

为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python,无需改代码,双击打开即用!

软件界面截图:
软件运行界面

爬取结果截图:
结果截图1

以上。

1.2 演示视频

软件使用演示:

【软件演示】爬小红薯详情软件

1.3 软件说明

几点重要说明:软件说明

以上。

二、代码讲解

2.1 爬虫采集模块

首先,定义接口地址作为请求地址:

# 请求地址
url = 'https://edith.xiaohongshu.com/api/sns/web/v1/feed'

定义一个请求头,用于伪造浏览器:

# 请求头
h1 = {
	'Accept': 'application/json, text/plain, */*',
	'Accept-Encoding': 'gzip, deflate, br',
	'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
	'Content-Type': 'application/json;charset=UTF-8',
	'Cookie': '换成自己的cookie值',
	'Origin': 'https://www.xiaohongshu.com',
	'Referer': 'https://www.xiaohongshu.com/',
	'Sec-Ch-Ua': '"Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
	'Sec-Ch-Ua-Mobile': '?0',
	'Sec-Ch-Ua-Platform': '"macOS"',
	'Sec-Fetch-Dest': 'empty',
	'Sec-Fetch-Mode': 'cors',
	'Sec-Fetch-Site': 'same-site',
	'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0',
}

说明一下,cookie是个关键参数。

其中,cookie里的a1和web_session获取方法,如下:

这两个值非常重要,软件界面需要填写!!

加上请求参数,告诉程序你的爬取条件是什么:

# 请求参数
post_data = {
	"source_note_id": note_id,
	"image_formats": ["jpg", "webp", "avif"],
	"extra": {"need_body_topic": "1"}
}

下面就是发送请求和接收数据:

# 发送请求
r = requests.post(url, headers=h1, data=data_json)
# 接收数据
json_data = r.json()

逐个解析字段数据,以"笔记标题"为例:

# 笔记标题
try:
	title = json_data['data']['items'][0]['note_card']['title']
except:
	title = ''

熟悉xhs的朋友都知道,有些笔记是没有标题的,所以这里加上try保护,防止程序报错导致中断运行。

其他字段同理,不再赘述。

最后,是把数据保存到csv文件:

# 返回数据
data_row = note_id, title, desc, create_time, update_time, ip_location, like_count, collected_count, comment_count, share_count, nickname, user_id, user_url
# 保存到csv文件
with open(self.result_file, 'a+', encoding='utf_8_sig', newline='') as f:
	writer = csv.writer(f)
	writer.writerow(data_row)

这里采用csv库保存数据,方便每爬取一条笔记数据,快速保存到csv文件中。

完整代码中,还含有:判断循环结束条件、转换时间戳、js逆向解密等关键实现逻辑。

2.2 软件界面模块

主窗口部分:

# 创建主窗口
root = tk.Tk()
root.title('小红薯条详情采集软件v1 | 马哥python说 |')
# 设置窗口大小
root.minsize(width=850, height=650)

输入控件部分:

# a1填写
tk.Label(root, justify='left', text='a1:').place(x=30, y=80)
entry_a1 = tk.Text(root, bg='#ffffff', width=96, height=2, )
entry_a1.place(x=125, y=80, anchor='nw')  # 摆放位置
# web_session填写
tk.Label(root, justify='left', text='web_session:').place(x=30, y=120)
entry_web_session = tk.Text(root, bg='#ffffff', width=96, height=2, )
entry_web_session.place(x=125, y=120, anchor='nw')  # 摆放位置

底部版权部分:

# 版权信息
copyright = tk.Label(root, text='@马哥python说 All rights reserved.', font=('仿宋', 10), fg='grey')
copyright.place(x=290, y=625)

以上。

2.3 日志模块

好的日志功能,方便软件运行出问题后快速定位原因,修复bug。

核心代码:

def get_logger(self):
	self.logger = logging.getLogger(__name__)
	# 日志格式
	formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
	# 日志级别
	self.logger.setLevel(logging.DEBUG)
	# 控制台日志
	sh = logging.StreamHandler()
	log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
	# info日志文件名
	info_file_name = time.strftime("%Y-%m-%d") + '.log'
	# 将其保存到特定目录
	case_dir = r'./logs/'
	info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
										when='MIDNIGHT',
										interval=1,
										backupCount=7,
										encoding='utf-8')

日志文件截图:

以上。

三、获取软件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地部署docker文档

由于访问 https://docs.docker.com/ 文档慢,直接本地部署官方文档 如果不想执行以下操作,也可以直接使用官方文档仓库地址提供的 Dockerfile 和 compose.yaml 进行操作 以下操作环境为Windows系统,根据 Dockerfile 相关操作来生成 html 页面…

二叉树【1】

操作 新建节点(new) 新建一个值为v的节点,左右孩子NULL 查找 void查找函数 { 递归边界:NULL,然后退出 (return;) 查找左子树 查找柚子树 } 插入 void 插入函数 {…

Vue表单元素绑定:v-model 指令

Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件…

NPM:配置阿里镜像库

1、配置阿里云镜像源 #查看当前使用的镜像地址命令 npm config get registry#设置阿里镜像源 npm config set registry http://registry.npmmirror.com 这里要注意下,之前的源镜像地址 https://registry.npm.taobao.org/ 已经不能用了,这里要更改为新地…

80页PPT数据中台应用技术实施方案

本文资料完整版81页PPT,下载完整PPT资料,知识星球APP搜索【智慧方案文库】,下载“数据中台”合集资料,以及8800份解决方案 数据中台设计的方法 (1)基于面向服务的架构方法(SOA) 基于面向服务的架构方法 …

spring整合redis

1.导入依赖 <!-- spring-data-redis 依赖--> <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>2.7.18</version> </dependency> <dependency><…

旧衣回收小程序系统,为市场发展提供新模式

随着绿色生活的兴起&#xff0c;回收成为了大众生活的新选择&#xff0c;其中旧衣物回收更是深入人心&#xff01;通过旧衣物回收&#xff0c;大众不仅可以减少浪费&#xff0c;也能够进行资源在利用。目前&#xff0c;在科技的支持下&#xff0c;旧衣物回收正以一种新的方式进…

机械学习—零基础学习日志(如何理解概率论6)

随机变量的数字特征——期望与方差 以小明的成绩为例&#xff0c;如图所示。 这里其实涉及到&#xff0c;数学期望的概念。 对应的数值&#xff0c;乘以概率&#xff0c;相加以后就得到了数学期望。 随机变量的数学期望与方差 、 来个练习题&#xff1a; 解析&#xff1a; …

自制多肉查询工具

背景&#xff1a; 复习python qt、网页解析的常用操作 准备&#xff1a; 多肉信息网站涉及python的第三方库&#xff1a; lxmlPyQt5 实现效果&#xff1a; 功能&#xff1a; 随机读取&#xff1a;从本地加载已存储的多肉信息数据更新&#xff1a;从多肉信息网站更新5条多…

QT:Qt与ECharts

介绍ECharts ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;由百度团队最初开发&#xff0c;并在2018年初捐赠给Apache基金会&#xff0c;成为ASF孵化级项目。随着项目的不断发展&#xff0c;ECharts在2021年1月26日正式毕业&#xff0c;成为Apache顶级项目 链接…

背包问题【算法 07】

背包问题 背包问题是经典的计算机科学问题之一&#xff0c;涉及到如何在有限资源的约束下&#xff0c;选择最优的物品组合&#xff0c;以最大化收益。这个问题在现实中有广泛的应用&#xff0c;例如资源分配、物流调度和投资组合优化等。本文将详细介绍背包问题的定义、解决方法…

pytorch深度学习基础 7(简单的的线性训练,SGD与Adam优化器)

接下来小编来讲一下一些优化器在线性问题中的简单使用使用&#xff0c;torch模块中有一个叫optim的子模块&#xff0c;我们可以在其中找到实现不同优化算法的类 SGD随机梯度下降 基本概念 定义&#xff1a;随机梯度下降&#xff08;SGD&#xff09;是一种梯度下降形式&#…

mysql中出现错误1138-Invalid use of NULL value

问题&#xff1a;1138-Invalid use of NULL value 解决&#xff1a; 问题是当前字段中&#xff0c;有null的值&#xff0c;简单来说就是&#xff0c;你表里有空值&#xff0c;不能设置不为空&#xff01;&#xff01;&#xff01; 把空的值删掉重新设计就好了

第一次重大人工智能失败刚刚发生

这终于发生了。我们迎来了第一家真正意义上的 AI 公司惨败。 Inflection是一家由比尔盖茨、埃里克施密特、微软等人投资的公司&#xff0c;它成为第一家被冲进马桶的生成式人工智能相关公司。 他们最重要的产品是Pi&#xff0c;ChatGPT 的竞争对手&#xff0c;专注于成为友好且…

SpringAOP使用详解

AOP使用详解 首先创建maven项目 添加依赖在pom.xml里 创建三层结构和spring.xml文件&#xff0c;只要用到注解就得写扫描包在spring.xml里 上篇文章的知识点总结 对上篇文章excution详细解释 如果把前置通知修改成这个代表只有带有Logger注解的才会生效 合并注解的方法用&…

Windows权限维持实战

目录 介绍步骤 介绍 在攻击过程中中对于拿到的shell或钓上来的鱼&#xff0c;目前比较流行用CS做统一管理&#xff0c;但实战中CS官方没有集成一键权限维持的功能&#xff0c;为了将该机器作为一个持久化的据点&#xff0c;种植一个具备持久化的后门&#xff0c;从而随时可以连…

ffmpeg最新5.1.6版本源码安装

一、编译安装需要的开源编码格式&#xff1a; 首先在编译安装这些开源编码格式之前,我们要明白为啥需要他们&#xff1a; aacx264x265 为啥需要呢&#xff1f;如果你对ffmpeg稍微了解的话&#xff0c;ffmpeg本身是一个框架&#xff0c;自身默认并没有支持这三种编码格式&…

Vue3 后台管理系统项目 前端部分

这里写目录标题 1 创建Vue3项目1.1 相关链接1.2 Vue Router1.3 Element1.4 scss1.5 mitt1.6 axios1.7 echarts1.8 配置vite.config.js 2 CSS部分2.1 样式穿透2.2 :style &#xff1a;在样式中使用插值语法 3. ElementUI3.1 rules&#xff1a; 数据验证3.2 修改element.style中的…

《计算机网络-期末模拟卷》

一、分析题&#xff08;每题 6 分&#xff0c;共 36 分&#xff09; 1.请分析图 1-1 所展示的是哪种互联网接入技术&#xff0c;分析此接入技术的优势&#xff0c;并介绍你所了解的其他互联网接入技术。&#xff08;至少写 3 个&#xff09; 二、计算问答题&#xff08;每题 5…

docker应用

打包传输 1.将镜像打包 #查看帮助文件 docker --help #找到save&#xff0c;可以将镜像保存为一个tar包 docker save --help #查看save使用方式 #查看现有的镜像 docker images # docker save --output centos.tar centos:latest ls ...centos.tar... 可以将tar发送给其他用户…