Total Pageviews

Sunday, 21 April 2024

小红书作品采集工具: XHS-Downloader


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

⌨️ 源码运行

  1. 安装版本号不低于 3.12 的 Python 解释器
  2. 运行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt 命令安装程序所需模块
  3. 下载本项目最新的源码或 Releases 发布的源码至本地
  4. 运行 main.py 即可使用

🛠 命令行模式

项目支持命令行运行模式,若想要下载图文作品的部分图片,可以使用此模式传入需要下载的图片序号!

可以使用命令行从浏览器读取 Cookie 并写入配置文件!注意需要关闭对应浏览器才能读取数据!

bool 类型参数支持使用 truefalse10yesnoonoff(不区分大小写)来设置。

命令示例: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 图文作品文件下载格式,支持:PNGWEBP PNG
image_download bool 图文作品文件下载开关 true
video_download bool 视频作品文件下载开关 true
folder_mode bool 是否将每个作品的文件储存至单独的文件夹;文件夹名称与文件名称保持一致 false
language str 设置程序语言,目前支持:zh_CNen_GB zh_CN

🌐 Cookie

  1. 打开浏览器(可选无痕模式启动),访问 https://www.xiaohongshu.com/explore
  2. 按下 F12 打开开发人员工具
  3. 选择 网络 选项卡
  4. 勾选 保留日志
  5. 过滤 输入框输入 cookie-name:web_session
  6. 选择 Fetch/XHR 筛选器
  7. 点击小红书页面任意作品
  8. 网络 选项卡选择任意数据包(如果无数据包,重复步骤7)
  9. 全选复制 Cookie 写入程序或配置文件

🗳 下载记录

XHS-Downloader 会将下载过的作品 ID 储存至数据库,当重复下载相同的作品时,XHS-Downloader 会自动跳过该作品的文件下载(即使作品文件不存在),如果想要重新下载作品文件,请先删除数据库中对应的作品 ID,再使用 XHS-Downloader 下载作品文件!

from https://github.com/JoeanAmier/XHS-Downloader

No comments:

Post a Comment