項目說明:這波視頻,值不值得采?
你有沒有遇到過這樣的場景?老板說:“我們得看看最近小紅書上關于‘旅行’的視頻都說了些什么。”團隊做數據分析的,立馬傻眼:官網打不開、接口抓不著、視頻不能保存。
事實上,小紅書短視頻內容正逐步成為品牌營銷、熱點追蹤、圖像分析等領域的“情緒入口”。尤其是搜索頁前幾條視頻,往往已經代表了這個關鍵詞下用戶眼中的“熱門答案”。
本項目就是圍繞這樣一個需求展開的:我們希望通過關鍵詞搜索,自動抓取小紅書里排在前3名的視頻內容,包括:
- 封面圖
- 視頻文件(如果有)
- 標題、作者、發布時間這些基本信息
你可以把這個腳本當成一個“圖文數據下載器”,用來收集訓練素材、做內容統計,或者單純保存好看的視頻封面圖。再配合一些圖像識別、文本處理工具,后續的玩法空間就打開了。
重點功能梳理(清單式整理)
功能點 | 用處說明 |
---|---|
搜索關鍵詞 | 獲取你關心的詞條的前三條筆記 |
提取圖片/視頻鏈接 | 拿到視頻的原始文件地址,不是截圖! |
拿到文本數據 | 包括標題、作者、時間,方便后續分析 |
使用代理IP | 為了穩定訪問和防止觸發風控 |
模擬瀏覽器 | 模擬真實用戶行為,讓服務器“誤以為”是人類在操作 |
關鍵代碼段(能直接拿去用)
1、網絡配置部分(含代理和請求頭)
import requests# 爬蟲代理加強版(參考億牛云代理)
proxy_host = "proxy.16yun.cn"
proxy_port = "9020"
proxy_user = "16YUN"
proxy_pass = "16IP"proxies = {"http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}","https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
}# 請求頭和 Cookie(可通過瀏覽器復制)
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0.0.0 Safari/537.36","Cookie": "這里替換為你自己的cookie字符串",
}
2、分析搜索頁接口,獲取核心數據
import jsondef search_notes(keyword):url = "https://edith.xiaohongshu.com/api/sns/web/v1/search/notes"params = {"keyword": keyword,"sort": "general","page": 1,"page_size": 10}resp = requests.get(url, headers=headers, proxies=proxies, params=params)data = json.loads(resp.text)results = []for i, item in enumerate(data['data']['items'][:3]):note = item.get("note_card", {})results.append({"title": note.get("title", ""),"author": note.get("user", {}).get("nickname", ""),"time": note.get("time", ""),"cover_img": note.get("image_list", [{}])[0].get("url", ""),"video_url": note.get("video", {}).get("media", {}).get("url", "")})return results
2.1下載視頻和圖片內容
def download_file(url, filename):if not url:print(f"跳過空鏈接:{filename}")returnresp = requests.get(url, headers=headers, proxies=proxies, stream=True)with open(filename, 'wb') as f:for chunk in resp.iter_content(chunk_size=8192):f.write(chunk)print(f"下載完成:{filename}")
2.2 主流程(邊抓邊下)
if __name__ == "__main__":kw = "旅行Vlog"results = search_notes(kw)for idx, r in enumerate(results):print(f"\n第{idx+1}條")print("標題:", r["title"])print("作者:", r["author"])print("時間:", r["time"])download_file(r["cover_img"], f"cover_{idx+1}.jpg")download_file(r["video_url"], f"video_{idx+1}.mp4")
使用建議
- 代理推薦:使用類似“億牛云”這種住宅動態代理,穩定性高一些
- Cookie處理:自己手動登錄小紅書網頁版后從控制臺復制即可
- 接口變動:小紅書接口可能不定期改,建議用抓包工具(如Mitmproxy)定期確認
- 頻率控制:盡量控制訪問頻率,模擬正常用戶節奏
快速試運行指引
- 打開瀏覽器,登錄小紅書網頁版
- 用F12打開開發者工具,獲取請求頭 & cookie
- 替換代碼里的對應字段
- 運行腳本,看是否能成功輸出視頻標題、作者和時間
- 查看腳本目錄,是否下載了封面圖和視頻文件
其他建議:可以加點視覺分析的料
如果你要搞點圖像識別,可以用 OpenCV 對封面圖做點篩選,例如:
import cv2def is_valid_image(path):img = cv2.imread(path)if img is None:return False# 這里可以加你自己的圖片過濾邏輯return True
最后
如果你只是想定期拉取關鍵詞對應的視頻內容,這個腳本就足夠用了;如果你還想做圖像識別、評論情緒分析甚至推薦系統,那就可以在此基礎上擴展。
這套邏輯目前在我們用得還挺穩定的(當然接口不能掛),你也可以根據業務做適當裁剪和封裝。遇到接口變更或風控升級,建議直接用瀏覽器工具重新確認數據來源。