赛派号

14mm珍珠多少钱 GitHub

XHS-Downloader

简体中文 | English

JoeanAmier%2FXHS-Downloader | Trendshift GitHub GitHub forks GitHub Repo stars Static Badge Static Badge GitHub code size in bytes GitHub release (with filter) GitHub all releases

🔥 小红书链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品链接、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书无水印作品文件!

🔥 “小红书”、“XiaoHongShu”、“RedNote” 含义相同,本项目统称为 “小红书”

⭐ 本项目完全免费开源,无任何收费功能,请勿上当受骗!

📑 项目功能 程序功能 ✅ 采集小红书作品信息 ✅ 提取小红书作品下载地址 ✅ 下载小红书无水印作品文件 ✅ 下载小红书 livePhoto 文件(非无水印) ✅ 自动跳过已下载的作品文件 ✅ 作品文件完整性处理机制 ✅ 自定义图文作品文件下载格式 ✅ 持久化储存作品信息至文件 ✅ 作品文件储存至单独文件夹 ✅ 后台监听剪贴板下载作品 ✅ 记录已下载作品 ID ✅ 支持命令行下载作品文件 ✅ 从浏览器读取 Cookie ✅ 自定义文件名称格式 ✅ 支持 API 调用功能 ✅ 支持文件断点续传下载 ✅ 智能识别作品文件类型 脚本功能 ✅ 下载小红书无水印作品文件 ✅ 提取发现页面作品链接 ✅ 提取账号发布作品链接 ✅ 提取账号收藏作品链接 ✅ 提取账号点赞作品链接 ✅ 提取账号专辑作品链接 ✅ 提取搜索结果作品链接 ✅ 提取搜索结果用户链接

⭐ XHS-Downloader 开发计划及进度可前往 Projects 查阅

📸 程序截图

🎥 点击图片观看演示视频

🔗 支持链接 https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX https://www.xiaohongshu.com/discovery/item/作品ID?xsec_token=XXX https://xhslink.com/分享码

支持单次输入多个作品链接,链接之间使用空格分隔;程序会自动提取有效链接,无需额外处理!

🪟 关于终端

⭐ 推荐使用 Windows 终端 (Windows 11 默认终端)运行程序以便获得最佳显示效果!

🥣 使用方法

如果仅需下载无水印作品文件,建议选择 程序运行Docker 运行;如果有其他需求,建议选择 源码运行

2.2 版本开始,项目功能无异常的情况下,无需额外处理 Cookie!

🖱 程序运行

⭐ Mac OS、Windows 10 及以上用户可前往 Releases 下载程序压缩包,解压后打开程序文件夹,双击运行 main 即可使用。

⭐ 本项目包含手动构建可执行文件的 GitHub Actions,使用者可以随时使用 GitHub Actions 将最新源码构建为可执行文件!

注意:Mac OS 平台可执行文件 main 可能需要从终端命令行启动;受设备限制,Mac OS 平台可执行文件尚未经过测试,无法保证可用性!

若通过此方式使用程序,文件默认下载路径为:.\_internal\Download;配置文件路径为:.\_internal\settings.json

⌨️ Docker 运行 获取镜像 方式一:使用 Dockerfile 文件构建镜像 方式二:使用 docker pull joeanamier/xhs-downloader 命令拉取镜像 创建容器 TUI 模式:docker run -it joeanamier/xhs-downloader API 模式:docker run -it joeanamier/xhs-downloader python main.py server 运行容器 启动容器:docker start -i 容器名称/容器 ID 重启容器:docker restart -i 容器名称/容器 ID

Docker 运行项目时不支持 命令行调用模式,无法使用 读取剪贴板监听剪贴板 功能,可以正常粘贴内容,其他功能如有异常请反馈!

⌨️ 源码运行 安装版本号为 3.12 的 Python 解释器 下载本项目最新的源码或 Releases 发布的源码至本地 打开终端,切换至项目根路径 运行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt 命令安装程序所需模块 运行 main.py 即可使用 🛠 命令行模式

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

可以使用命令行 从浏览器读取 Cookie 并写入配置文件!

命令示例:python .\main.py --browser_cookie Chrome --update_settings

bool 类型参数支持使用 true、false、1、0、yes、no、on 或 off(不区分大小写)来设置。

🖥 服务器模式

启动:运行命令:python .\main.py server

关闭:按下 Ctrl + C 关闭服务器

请求接口:/xhs/

请求方法:POST

请求格式:JSON

请求参数:

参数 类型 含义 默认值 url str 小红书作品链接,自动提取,不支持多链接;必需参数 无 download bool 是否下载作品文件;设置为 true 将会耗费更多时间;可选参数 false index list[int] 下载指定序号的图片文件,仅对图文作品生效;download 参数设置为 false 时不生效;可选参数 null cookie str 请求数据时使用的 Cookie;可选参数 配置文件 Cookie 值 skip bool 是否跳过存在下载记录的作品;设置为 true 将不会返回存在下载记录的作品数据;可选参数 false

代码示例:

def api_demo(): server = "http://127.0.0.1:8000/xhs/" data = { "url": "https://www.xiaohongshu.com/explore/123456789", "download": True, "index": [ 3, 6, 9, ], } response = requests.post(server, json=data) print(response.json()) 📜 其他说明 由于作品链接携带日期信息,使用先前日期获取的作品链接可能会被风控,建议下载作品文件时使用最新获取的作品链接 Windows 系统需要以管理员身份运行程序才能读取 Chromium、Chrome、Edge 浏览器 Cookie 如果开启保存作品数据至文件功能,作品数据默认储存至 ./Download/ExploreData.db 文件 程序下载记录数据储存至 ./ExploreID.db 文件 🕹 用户脚本

如果您的浏览器安装了 Tampermonkey 浏览器扩展程序,可以添加 用户脚本,无需下载安装即可体验项目功能!

脚本安装成功后,打开小红书页面,查看脚本说明,并根据提示操作。

提示:使用 XHS-Downloader 用户脚本批量提取作品链接,搭配 XHS-Downloader 程序可以实现批量下载无水印作品文件!

📜 脚本说明 下载小红书无水印作品文件时,脚本需要花费时间处理文件,请等待片刻,切勿多次点击下载按钮 无水印图片文件为 PNG 格式;无水印视频文件较大,可能需要较长的时间处理,页面跳转可能会导致下载失败 提取账号发布、收藏、点赞、专辑作品链接时,脚本可以自动滚动页面直至加载全部作品,默认滚动检测间隔:2.5 秒 提取发现作品链接、搜索作品、用户链接时,脚本可以自动滚动页面加载更多内容,默认滚动页面次数:10 次 自动滚动页面功能默认关闭;用户可以自由开启,并修改滚动检测间隔、滚动页面次数,修改后立即生效 如果未开启自动滚动页面功能,用户需要手动滚动页面以便加载更多内容后再进行其他操作 支持作品文件打包下载;该功能默认开启,多个文件的作品将会以压缩包格式下载 使用全局代理工具可能会导致脚本下载文件失败,如有异常,请尝试关闭代理工具,必要时向作者反馈 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 name_format = "作品标题 作品描述" 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, name_format=name_format, 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, index=[1, 2])) # 支持传入多个作品链接 print(await xhs.extract(multiple_links, download, )) 📋 读取剪贴板

项目使用 pyperclip 实现读取剪贴板功能,该模块在不同的系统上会有差异。

在 Windows 上,不需要额外的模块。

在 Mac 上,该模块使用 pbcopy 和 pbpaste 命令,这些命令应该随操作系统一起提供。

在 Linux 上,该模块使用 xclip 或 xsel 命令,这些命令应该随操作系统一起提供。否则,请运行 "sudo apt-get install xclip" 或 "sudo apt-get install xsel"(注意:xsel 似乎并不总是有效)

在其他 Linux 系统上,你需要安装 qtpy 或 PyQT5 模块。

⚙️ 配置文件

项目根目录下的 settings.json 文件,首次运行自动生成,可以自定义部分运行参数。

如果设置了无效的参数值,程序将会使用参数默认值!

参数 类型 含义 默认值 work_path str 作品数据 / 文件保存根路径 项目根路径 folder_name str 作品文件储存文件夹名称 Download name_format str 作品文件名称格式,字段之间使用空格分隔,支持字段:收藏数量、评论数量、分享数量、点赞数量、作品标签、作品ID、作品标题、作品描述、作品类型、发布时间、最后更新时间、作者昵称、作者ID 发布时间 作者昵称 作品标题 user_agent str 浏览器 User Agent 内置 Chrome User Agent cookie str 小红书网页版 Cookie,无需登录,非必需参数! 无 proxy str 设置程序代理 null timeout int 请求数据超时限制,单位:秒 10 chunk int 下载文件时,每次从服务器获取的数据块大小,单位:字节 2097152(2 MB) max_retry int 请求数据失败时,重试的最大次数,单位:秒 5 record_data bool 是否保存作品数据至文件,保存格式:SQLite false image_format str 图文作品文件下载格式,支持:PNG、WEBP该参数影响下载图片时所用的接口,并非固定图片格式! PNG image_download bool 图文作品文件下载开关 true video_download bool 视频作品文件下载开关 true live_download bool 图文动图文件下载开关 false folder_mode bool 是否将每个作品的文件储存至单独的文件夹;文件夹名称与文件名称保持一致 false download_record bool 是否记录下载成功的作品 ID,如果开启,程序将会自动跳过下载存在记录的作品 true language str 设置程序语言,目前支持:zh_CN、en_US zh_CN

其他说明:user_agent参数获取示例;强烈建议根据实际浏览器信息进行设置!

🌐 Cookie

2.2 版本开始,项目功能无异常的情况下,无需额外处理 Cookie!

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

🗳 下载记录

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

该功能默认开启,如果关闭该功能,XHS-Downloader 会检查文件是否存在,若文件存在则跳过下载!

📦 构建可执行文件指南

本指南将引导您通过 Fork 本仓库并执行 GitHub Actions 自动完成基于最新源码的程序构建和打包!

使用步骤 1. Fork 本仓库 点击项目仓库右上角的 Fork 按钮,将本仓库 Fork 到您的个人 GitHub 账户中 您的 Fork 仓库地址将类似于:https://github.com/your-username/this-repo 2. 启用 GitHub Actions 前往您 Fork 的仓库页面 点击顶部的 Settings 选项卡 点击右侧的 Actions 选项卡 点击 General 选项 在 Actions permissions 下,选择 Allow all actions and reusable workflows 选项,点击 Se 按钮 3. 手动触发打包流程 在您 Fork 的仓库中,点击顶部的 Actions 选项卡 找到名为 手动构建可执行文件 的工作流 点击右侧的 Run workflow 按钮: 选择 master 或者 develop 分支 点击 Run workflow 4. 查看打包进度 在 Actions 页面中,您可以看到触发的工作流运行记录 点击运行记录,查看详细的日志以了解打包进度和状态 5. 下载打包结果 打包完成后,进入对应的运行记录页面 在页面底部的 Artifacts 部分,您将看到打包的结果文件 点击下载并保存到本地,即可获得打包好的程序 注意事项

资源使用:

Actions 的运行环境由 GitHub 免费提供,普通用户每月有一定的免费使用额度(2000 分钟)

代码修改:

您可以自由修改 Fork 仓库中的代码以定制程序打包流程 修改后重新触发打包流程,您将得到自定义的构建版本

与主仓库保持同步:

如果主仓库更新了代码或工作流,建议您定期同步 Fork 仓库以获取最新功能和修复 Actions 常见问题 Q1: 为什么我无法触发工作流?

A: 请确认您已按照步骤 启用 Actions,否则 GitHub 会禁止运行工作流

Q2: 打包流程失败怎么办?

A:

检查运行日志,了解失败原因 确保代码没有语法错误或依赖问题 如果问题仍未解决,可以在本仓库的 Issues 页面 提出问题 Q3: 我可以直接使用主仓库的 Actions 吗?

A: 由于权限限制,您无法直接触发主仓库的 Actions。请通过 Fork 仓库的方式执行打包流程

♥️ 支持项目

如果 XHS-Downloader 对您有帮助,请考虑为它点个 Star ⭐,感谢您的支持!

微信(WeChat) 支付宝(Alipay) 微信赞助二维码 支付宝赞助二维码

如果您愿意,可以考虑提供资助为 XHS-Downloader 提供额外的支持!

🌟 贡献指南

欢迎对本项目做出贡献!为了保持代码库的整洁、高效和易于维护,请仔细阅读以下指南,以确保您的贡献能够顺利被接受和整合。

在开始开发前,请从 develop 分支拉取最新的代码,以此为基础进行修改;这有助于避免合并冲突并保证您的改动基于最新的项目状态。 如果您的更改涉及多个不相关的功能或问题,请将它们分成多个独立的提交或拉取请求。 每个拉取请求应尽可能专注于单一功能或修复,以便于代码审查和测试。 遵循现有的代码风格;请确保您的代码与项目中已有的代码风格保持一致。 编写可读性强的代码;添加适当的注释帮助他人理解您的意图。 每个提交都应该包含一个清晰、简洁的提交信息,以描述所做的更改。提交信息应遵循以下格式:: 当您准备提交拉取请求时,请优先将它们提交到 develop 分支;这是为了给维护者一个缓冲区,在最终合并到 master 分支之前进行额外的测试和审查。

参考资料:

贡献者公约 如何为开源做贡献 ✉️ 联系作者 作者邮箱:yonglelolu@foxmail.com 作者微信: Downloader_Tools 微信公众号: Downloader Tools Discord 社区: 点击加入社区 QQ 群聊: 扫码加入群聊

说明:QQ 群聊仅限于讨论项目使用问题,严禁发布任何广告,严禁讨论任何账号交易、账号流量、流量变现、灰色产业等相关的内容!

作者的其他开源项目:

TikTokDownloader(抖音 / TikTok):https://github.com/JoeanAmier/TikTokDownloader KS-Downloader(快手):https://github.com/JoeanAmier/KS-Downloader 💰 项目赞助

PyCharm logo

JetBrains 支持全球开源社区认可的活跃项目,并为非商业开发提供免费许可证。

⚠️ 免责声明 使用者对本项目的使用由使用者自行决定,并自行承担风险。作者对使用者使用本项目所产生的任何损失、责任、或风险概不负责。 本项目的作者提供的代码和功能是基于现有知识和技术的开发成果。作者尽力确保代码的正确性和安全性,但不保证代码完全没有错误或缺陷。 使用者在使用本项目时必须严格遵守 GNU General Public License v3.0 的要求,并在适当的地方注明使用了 GNU General Public License v3.0 的代码。 使用者在任何情况下均不得将本项目的作者、贡献者或其他相关方与使用者的使用行为联系起来,或要求其对使用者使用本项目所产生的任何损失或损害负责。 使用者在使用本项目的代码和功能时,必须自行研究相关法律法规,并确保其使用行为合法合规。任何因违反法律法规而导致的法律责任和风险,均由使用者自行承担。 本项目的作者不会提供 XHS-Downloader 项目的付费版本,也不会提供与 XHS-Downloader 项目相关的任何商业服务。 基于本项目进行的任何二次开发、修改或编译的程序与原创作者无关,原创作者不承担与二次开发行为或其结果相关的任何责任,使用者应自行对因二次开发可能带来的各种情况负全部责任。 在使用本项目的代码和功能之前,请您认真考虑并接受以上免责声明。如果您对上述声明有任何疑问或不同意,请不要使用本项目的代码和功能。如果您使用了本项目的代码和功能,则视为您已完全理解并接受上述免责声明,并自愿承担使用本项目的一切风险和后果。 💡 项目参考 https://github.com/encode/httpx/ https://github.com/tiangolo/fastapi https://github.com/textualize/textual/ https://github.com/omnilib/aiosqlite https://github.com/thewh1teagle/rookie https://github.com/carpedm20/emoji/ https://github.com/asweigart/pyperclip https://github.com/lxml/lxml https://github.com/yaml/pyyaml https://github.com/pallets/click/ https://github.com/encode/uvicorn https://github.com/Tinche/aiofiles

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lsinopec@gmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了