XHS-Downloader是一款国人开源的小红书作品采集工具。基于Python编写,遵守GPL3.0开源协议。可以提取账号发布、收藏、点赞作品链接;提取搜索结果作品、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书无水印作品文件。
功能特色:
程序功能
✅ 采集小红书作品信息
✅ 提取小红书作品下载地址
✅ 下载小红书无水印作品文件
✅ 自动跳过已下载的作品文件
✅ 作品文件完整性处理机制
✅ 自定义图文作品文件下载格式
✅ 持久化储存作品信息至文件
✅ 作品文件储存至单独文件夹
✅ 后台监听剪贴板下载作品
✅ 记录已下载作品 ID
✅ 支持命令行下载作品文件
✅ 从浏览器读取 Cookie
☑️ 支持 API 调用功能
脚本功能
✅ 下载小红书无水印作品文件
✅ 提取发现页面作品链接
✅ 提取账号发布作品链接
✅ 提取账号收藏作品链接
✅ 提取账号点赞作品链接
✅ 提取搜索结果作品链接
✅ 提取搜索结果用户链接
源代码:https://github.com/JoeanAmier/XHS-Downloader
------------
程序截图
🎥 点击图片观看演示视频
https://www.xiaohongshu.com/explore/作品ID
https://www.xiaohongshu.com/discovery/item/作品ID
https://xhslink.com/分享码
支持单次输入多个作品链接,链接之间使用空格分隔。
⭐ 推荐使用 Windows 终端 (Windows 11 默认终端)运行程序以便获得最佳显示效果!
如果仅需下载无水印作品文件,建议选择 程序运行;如果有其他需求,建议选择 源码运行!
建议自行设置 cookie
参数,若不设置该参数,程序功能可能无法正常使用!
Windows 10 及以上用户可前往 Releases 下载程序压缩包或安装包,解压或安装后打开程序文件夹,双击运行 main.exe
即可使用。
若通过此方式使用程序,文件默认下载路径为:.\_internal\Download
;配置文件路径为:.\_internal\settings.json
- 安装版本号不低于
3.12
的 Python 解释器 - 运行
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
命令安装程序所需模块 - 下载本项目最新的源码或 Releases 发布的源码至本地
- 运行
main.py
即可使用
项目支持命令行运行模式,若想要下载图文作品的部分图片,可以使用此模式传入需要下载的图片序号!
可以使用命令行从浏览器读取 Cookie 并写入配置文件!注意需要关闭对应浏览器才能读取数据!
bool
类型参数支持使用 true
、false
、1
、0
、yes
、no
、on
或 off
(不区分大小写)来设置。
命令示例:python .\main.py --browser_cookie Chrome --update_settings
如果您的浏览器安装了 Tampermonkey 浏览器扩展程序,可以添加 用户脚本,无需下载安装即可体验项目功能!
提示:使用 XHS-Downloader 用户脚本批量提取作品链接,搭配 XHS-Downloader 程序可以实现批量下载无水印作品文件!
如果有其他需求,可以根据 main.py
的注释提示进行代码调用或修改!
async def example(): """通过代码设置参数,适合二次开发""" # 示例链接 error_link = "https://github.com/JoeanAmier/XHS_Downloader" demo_link = "https://www.xiaohongshu.com/explore/xxxxxxxxxx" multiple_links = f"{demo_link} {demo_link} {demo_link}" # 实例对象 work_path = "D:\\" # 作品数据/文件保存根路径,默认值:项目根路径 folder_name = "Download" # 作品文件储存文件夹名称(自动创建),默认值:Download user_agent = "" # 请求头 User-Agent,可选参数 cookie = "" # 小红书网页版 Cookie,无需登录,必需参数 proxy = None # 网络代理 timeout = 5 # 请求数据超时限制,单位:秒,默认值:10 chunk = 1024 * 1024 * 10 # 下载文件时,每次从服务器获取的数据块大小,单位:字节 max_retry = 2 # 请求数据失败时,重试的最大次数,单位:秒,默认值:5 record_data = False # 是否保存作品数据至文件 image_format = "WEBP" # 图文作品文件下载格式,支持:PNG、WEBP folder_mode = False # 是否将每个作品的文件储存至单独的文件夹 async with XHS() as xhs: pass # 使用默认参数 async with XHS(work_path=work_path, folder_name=folder_name, user_agent=user_agent, cookie=cookie, proxy=proxy, timeout=timeout, chunk=chunk, max_retry=max_retry, record_data=record_data, image_format=image_format, folder_mode=folder_mode, ) as xhs: # 使用自定义参数 download = True # 是否下载作品文件,默认值:False # 返回作品详细信息,包括下载地址 # 获取数据失败时返回空字典 print(await xhs.extract(error_link, download, )) print(await xhs.extract(demo_link, download, )) # 支持传入多个作品链接 print(await xhs.extract(multiple_links, download, ))
项目根目录下的 settings.json
文件,首次运行自动生成,可以自定义部分运行参数。
参数 | 类型 | 含义 | 默认值 |
---|---|---|---|
work_path | str | 作品数据 / 文件保存根路径 | 项目根路径 |
folder_name | str | 作品文件储存文件夹名称 | Download |
user_agent | str | 请求头 User-Agent | 默认 UA |
cookie | str | 小红书网页版 Cookie,无需登录 | 无 |
proxy | str | 设置程序代理 | null |
timeout | int | 请求数据超时限制,单位:秒 | 10 |
chunk | int | 下载文件时,每次从服务器获取的数据块大小,单位:字节 | 1048576(1 MB) |
max_retry | int | 请求数据失败时,重试的最大次数,单位:秒 | 5 |
record_data | bool | 是否保存作品数据至文件,保存格式:SQLite |
false |
image_format | str | 图文作品文件下载格式,支持:PNG 、WEBP |
PNG |
image_download | bool | 图文作品文件下载开关 | true |
video_download | bool | 视频作品文件下载开关 | true |
folder_mode | bool | 是否将每个作品的文件储存至单独的文件夹;文件夹名称与文件名称保持一致 | false |
language | str | 设置程序语言,目前支持:zh_CN 、en_GB |
zh_CN |
- 打开浏览器(可选无痕模式启动),访问
https://www.xiaohongshu.com/explore
- 按下
F12
打开开发人员工具 - 选择
网络
选项卡 - 勾选
保留日志
- 在
过滤
输入框输入cookie-name:web_session
- 选择
Fetch/XHR
筛选器 - 点击小红书页面任意作品
- 在
网络
选项卡选择任意数据包(如果无数据包,重复步骤7) - 全选复制 Cookie 写入程序或配置文件
from https://github.com/JoeanAmier/XHS-Downloader
No comments:
Post a Comment