簡體中文| English
小紅書連結擷取/作品採集工具:擷取帳號發佈、收藏、按讚、專輯作品連結;擷取搜尋結果作品連結、使用者連結;擷取小紅書作品資訊;擷取小紅書作品下載地址;下載小紅書無浮水印作品文件!
本專案完全免費開源,無任何收費功能,請勿被騙!
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
即可使用。
注意:Mac OS 平台可執行檔main
可能需要從終端命令列啟動;受裝置限制,Mac OS 平台可執行檔尚未經過測試,無法保證可用性!
若透過此方式使用程序,檔案預設下載路徑為: ._internalDownload
;設定檔路徑為: ._internalsettings.json
Dockerfile
檔案建構鏡像docker pull joeanamier/xhs-downloader
指令拉取映像docker run -it joeanamier/xhs-downloader
docker run -it joeanamier/xhs-downloader python main.py server
docker start -i 容器名称/容器ID
docker restart -i 容器名称/容器ID
Docker 執行專案時不支援命令列呼叫模式,無法使用讀取剪貼簿與監聽剪貼簿功能,可正常貼上內容,其他功能如有異常請回饋!
3.12
的Python 解譯器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 |
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())
如果您的瀏覽器安裝了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 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_GB | zh_CN |
其他說明: user_agent
參數取得範例;強烈建議根據實際瀏覽器資訊進行設定!
2.2
版本開始,專案功能無異常的情況下,無需額外處理Cookie!
https://www.xiaohongshu.com/explore
F12
開啟開發人員工具网络
標籤保留日志
过滤
輸入框輸入cookie-name:web_session
Fetch/XHR
篩選器网络
選項卡選擇任意資料包(如果無資料包,重複步驟7)XHS-Downloader 會將下載的作品ID 儲存至資料庫,當重複下載相同的作品時,XHS-Downloader 會自動跳過該作品的文件下載(即使作品文件不存在),如果想要重新下載作品文件,請先刪除資料庫對應的作品ID,再使用XHS-Downloader 下載作品檔!
此功能預設為開啟,如果關閉該功能,XHS-Downloader 會檢查檔案是否存在,若檔案存在則跳過下載!
如果XHS-Downloader對您有幫助,請考慮為它點個Star ,感謝您的支持!
微信(微信) | 支付寶(Alipay) |
---|---|
如果您願意,可以考慮提供資助為XHS-Downloader提供額外的支援!
說明: QQ 群組聊天僅限於討論專案使用問題,嚴禁發布任何廣告,嚴禁討論任何帳號交易、帳號流量、流量變現、灰色產業等相關的內容!
作者的其他開源專案:
JetBrains支持全球開源社群認可的活躍項目,並為非商業開發提供免費授權。