Python小红书数据采集入门指南:3分钟掌握xhs工具核心用法
【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs
想要轻松获取小红书公开数据却不知从何入手?xhs工具为你提供了完美的Python解决方案!作为一款基于小红书Web端API封装的Python爬虫库,xhs让开发者能够快速、高效地采集小红书平台的公开内容数据。无论你是进行市场调研、竞品分析还是内容创作研究,这个开源工具都能帮助你以极低的成本获取宝贵的数据资源。
🎯 为什么选择xhs工具进行小红书数据采集?
在众多小红书数据采集方案中,xhs以其独特的优势脱颖而出:
| Python原生支持 | 纯Python实现,无需额外依赖 | Python开发者快速集成 |
| API封装完善 | 全面覆盖小红书Web端接口 | 获取笔记、用户、评论等全量数据 |
| 签名机制支持 | 内置反爬绕过机制 | 稳定获取数据不被封禁 |
| 开源免费 | 完全开源,可自由定制 | 商业和个人项目均可使用 |
| 持续维护 | 活跃的开发者社区 | 长期稳定的技术支持 |
xhs工具的核心功能概览
xhs工具提供了丰富的数据采集功能,让你能够:
- 🔍 内容搜索:按关键词搜索笔记,支持多种排序方式
- 👤 用户分析:获取用户信息、笔记列表、关注关系
- 💬 评论采集:获取笔记评论及子评论数据
- 📊 互动数据:点赞、收藏、关注等互动操作
- 📱 登录支持:二维码登录和手机验证码登录
🚀 快速开始:5步搭建xhs开发环境
第一步:环境准备检查
在开始之前,请确保你的环境满足以下要求:
第二步:安装xhs工具
方式一:PyPI官方安装(推荐新手)
pip install xhs
方式二:源码编译安装(获取最新功能)
git clone https://gitcode.com/gh_mirrors/xh/xhs
cd xhs && python setup.py install
方式三:开发模式安装(适合二次开发)
pip install -e .[dev]
第三步:安装必要依赖
xhs依赖于几个关键库,安装时请确保:
# 安装核心依赖
pip install playwright requests
# 安装浏览器环境
playwright install
# 下载反爬绕过脚本
curl -O https://cdn.jsdelivr.net/gh/requireCool/stealth.min.js/stealth.min.js
第四步:获取小红书Cookie
要使用xhs工具,你需要获取有效的小红书Cookie信息。Cookie中必须包含以下三个关键字段:
重要提示:请通过浏览器开发者工具获取Cookie,确保包含上述三个字段。
第五步:创建第一个xhs客户端
from xhs import XhsClient
# 基础初始化
client = XhsClient(cookie="your_cookie_here")
# 测试连接
results = client.search_note(keyword="测试", page=1, page_size=5)
print(f"成功获取{len(results['items'])}条数据")
📊 xhs工具核心模块深度解析
项目结构概览
项目的核心代码位于 xhs/ 目录下,主要包含以下关键文件:
- core.py – 核心客户端类,包含所有API方法
- help.py – 工具函数和辅助方法
- exception.py – 异常处理模块
- init.py – 模块导出和初始化
客户端初始化详解
使用xhs的第一步是创建客户端实例。你可以根据需求选择不同的初始化方式:
# 基础初始化方式
client = XhsClient(cookie="your_cookie_here")
# 高级初始化(带签名功能)
def custom_sign(uri, data=None, a1="", web_session=""):
# 自定义签名逻辑
return {"x-s": "signature", "x-t": "timestamp"}
client = XhsClient(cookie="your_cookie", sign=custom_sign)
# 带代理的初始化
client = XhsClient(
cookie="your_cookie",
proxies={
"http": "http://127.0.0.1:1080",
"https": "http://127.0.0.1:1080"
}
)
🎯 实战应用:4个常见数据采集场景
场景一:关键词内容搜索与分析
进行市场调研时,你需要了解某个话题的热度:
# 搜索"健身教程"相关笔记
results = client.search_note(
keyword="健身教程",
page=1,
page_size=20,
sort="hot" # 按热度排序
)
# 分析搜索结果
for note in results['items']:
print(f"标题: {note['title']}")
print(f"作者: {note['user']['nickname']}")
print(f"点赞数: {note['like_count']}")
print(f"收藏数: {note['collect_count']}")
print("-" * 40)
场景二:用户数据分析与监控
分析特定用户的创作习惯和粉丝互动:
# 获取用户基本信息
user_info = client.get_user_info(user_id="目标用户ID")
print(f"用户名: {user_info['nickname']}")
print(f"粉丝数: {user_info['fans_count']}")
print(f"获赞数: {user_info['liked_count']}")
# 获取用户所有笔记
user_notes = client.get_user_all_notes(
user_id="目标用户ID",
crawl_interval=2 # 请求间隔2秒,避免过快
)
print(f"用户共有{len(user_notes)}篇笔记")
场景三:评论情感分析与收集
了解用户对某篇笔记的反馈和互动情况:
# 获取笔记评论
comments = client.get_note_all_comments(
note_id="笔记ID",
crawl_interval=1,
xsec_token="安全令牌"
)
# 分析评论数据
for comment in comments:
print(f"用户: {comment['user']['nickname']}")
print(f"评论内容: {comment['content']}")
print(f"点赞数: {comment['like_count']}")
print(f"发布时间: {comment['create_time']}")
print("-" * 30)
场景四:内容下载与本地保存
批量下载笔记中的图片和视频资源:
# 保存笔记中的文件
client.save_files_from_note_id(
note_id="笔记ID",
dir_path="./downloads" # 保存目录
)
# 从笔记对象获取图片URL
from xhs import help
note = client.get_note_by_id("笔记ID", "安全令牌")
image_urls = help.get_imgs_url_from_note(note)
video_url = help.get_video_url_from_note(note)
print(f"图片数量: {len(image_urls)}")
print(f"视频URL: {video_url}")
⚡ 高级技巧:提升数据采集效率与稳定性
签名服务部署指南
对于生产环境,建议部署独立的签名服务:
docker run -it -d -p 5005:5005 reajason/xhs-api:latest
智能请求频率控制
避免触发反爬机制的关键策略:
import time
import random
from functools import wraps
def rate_limit(func):
"""请求频率限制装饰器"""
@wraps(func)
def wrapper(*args, **kwargs):
# 随机延迟1-3秒,模拟人工操作
time.sleep(random.uniform(1, 3))
return func(*args, **kwargs)
return wrapper
# 使用装饰器
@rate_limit
def safe_search(client, keyword):
return client.search_note(keyword=keyword)
错误处理与自动重试机制
from xhs import DataFetchError
import time
def robust_request(client, func, *args, max_retries=3, **kwargs):
"""带重试机制的请求函数"""
for attempt in range(max_retries):
try:
return func(*args, **kwargs)
except DataFetchError as e:
print(f"第{attempt+1}次请求失败: {e}")
if attempt < max_retries – 1:
wait_time = 2 ** attempt # 指数退避策略
print(f"等待{wait_time}秒后重试…")
time.sleep(wait_time)
else:
print("已达到最大重试次数,请求失败")
raise
📋 数据采集最佳实践与合规指南
数据采集伦理原则
使用xhs工具时,请务必遵守以下原则:
数据存储方案对比
| CSV文件 | 简单易用,兼容性好 | 小规模数据,快速分析 |
| SQLite数据库 | 轻量级,无需额外服务 | 个人项目,本地存储 |
| MySQL/PostgreSQL | 功能强大,支持复杂查询 | 企业级应用,大规模数据 |
| MongoDB | 灵活的模式,适合非结构化数据 | 内容分析,JSON数据存储 |
🔧 常见问题与解决方案
问题一:签名失败怎么办?
可能原因:
解决方案:
问题二:获取数据为空?
排查步骤:
问题三:请求频率过高被封?
预防措施:
🚀 构建完整的数据采集系统
第一步:环境配置与初始化
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\\Scripts\\activate # Windows
# 安装依赖
pip install xhs playwright requests pandas
playwright install
第二步:基础功能测试验证
# test_basic.py
from xhs import XhsClient
def test_connection():
client = XhsClient(cookie="your_cookie")
results = client.search_note(keyword="测试", page=1, page_size=5)
print(f"成功获取{len(results['items'])}条数据")
return True
第三步:数据管道设计与实现
# data_pipeline.py
import pandas as pd
from datetime import datetime
class XhsDataPipeline:
def __init__(self, cookie):
self.client = XhsClient(cookie=cookie)
self.data = []
def collect_keyword_data(self, keyword, pages=3):
"""采集关键词相关数据"""
for page in range(1, pages + 1):
results = self.client.search_note(
keyword=keyword,
page=page,
page_size=20
)
self.process_results(results)
def process_results(self, results):
"""处理并存储数据"""
for note in results['items']:
record = {
'note_id': note.get('id'),
'title': note.get('title'),
'author': note.get('user', {}).get('nickname'),
'likes': note.get('like_count', 0),
'collects': note.get('collect_count', 0),
'comments': note.get('comment_count', 0),
'timestamp': datetime.now().isoformat()
}
self.data.append(record)
def save_to_csv(self, filename):
"""保存为CSV文件"""
df = pd.DataFrame(self.data)
df.to_csv(filename, index=False, encoding='utf-8-sig')
print(f"数据已保存到 {filename}")
第四步:定时任务与监控系统
# scheduler.py
import schedule
import time
from data_pipeline import XhsDataPipeline
def daily_collection():
"""每日数据采集任务"""
pipeline = XhsDataPipeline(cookie="your_cookie")
keywords = ["美妆", "穿搭", "美食", "旅行"]
for keyword in keywords:
print(f"开始采集关键词: {keyword}")
pipeline.collect_keyword_data(keyword, pages=2)
pipeline.save_to_csv(f"data_{datetime.now().date()}.csv")
# 设置定时任务
schedule.every().day.at("02:00").do(daily_collection)
while True:
schedule.run_pending()
time.sleep(60)
💡 创意应用场景与商业价值
应用一:市场趋势分析与预测
使用xhs监测特定行业的关键词热度变化,分析用户关注点的迁移趋势,为市场决策提供数据支持。
应用二:内容创作优化辅助
分析热门笔记的特征(标题、标签、发布时间等),帮助内容创作者优化创作策略,提高内容曝光率。
应用三:竞品监控与策略调整
定期采集竞争对手的账号数据,监控其内容发布频率、互动数据变化,及时调整自身策略。
应用四:学术研究与数据分析
为社会科学研究提供数据支持,分析社交媒体上的用户行为模式、话题传播规律等。
📚 学习路径与进阶指南
初学者学习路径
进阶学习方向
官方文档参考
- 基础使用文档:docs/basic.rst
- 爬虫进阶指南:docs/crawl.rst
- 创作者功能说明:docs/creator.rst
🎉 开始你的小红书数据采集之旅
现在你已经掌握了xhs工具的完整使用方法。无论你是数据分析师、市场研究员还是内容创作者,这个强大的工具都能为你的工作提供有力支持。
记住,技术只是工具,如何使用它才是关键。始终以负责任的态度使用数据采集工具,尊重平台规则和用户隐私,让数据为你的工作和研究创造真正的价值。
立即行动:
祝你数据采集顺利,收获满满! 📊✨
【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考


