小红书爬虫合规采集小红书商城公开商品数据教程

有效粉丝购买 点赞刷播放量 直播间人气假人
点击进入自助下单
发布时间:2026-05-16 | 栏目:小红书

在数字化营销时代,小红书作为国内领先的社交电商平台,其商城公开商品数据蕴含着巨大的市场洞察价值。然而,传统爬虫方法因平台反爬机制限制难以高效采集,本文将介绍如何使用合规的Python工具库实现小红书商品数据的自动化采集,助力市场分析与竞品监测。

一、合规采集的核心原则

小红书《robots.txt》明确允许对公开页面进行合理爬取,但需遵守以下规则:

1. 频率控制:单IP请求间隔建议≥3秒,避免触发频率限制

2. 用户代理:使用真实浏览器User-Agent(如Mozilla/5.0)

3. 数据范围:仅采集公开商品信息(标题、价格、销量、评论等),不涉及用户隐私数据

4. 会话管理:通过合法Cookie维持登录状态,避免频繁验证

二、技术选型与工具准备

推荐使用专为小红书设计的`xhs`工具库,其核心优势包括:

- 动态签名处理:自动计算平台要求的x-s签名参数

- 浏览器指纹伪装:集成stealth.min.js绕过反爬检测

- 智能请求调度:支持固定间隔、随机延迟、分布式IP池模式

#环境搭建步骤:

```bash

创建虚拟环境(推荐Python 3.9+)

python -m venv xhs_env

source xhs_env/bin/activate Linux/Mac

xhs_env\Scripts\activate Windows

安装依赖库

pip install xhs playwright pandas

playwright install

```

三、核心采集流程实现

#1. 获取合法访问凭证

通过浏览器开发者工具获取必要Cookie字段:

```python

from xhs import XhsClient

手动获取Cookie(推荐使用二维码登录)

cookie = {

"a1": "用户身份标识",

"web_session": "会话令牌",

"webId": "设备唯一标识"

}

或使用自动化登录

client = XhsClient()

client.login_qrcode() 扫码登录

cookie = client.get_cookies()

```

#2. 商品数据采集示例

```python

def fetch_product_data(keyword, max_pages=5):

"""采集搜索关键词下的商品数据"""

client = XhsClient(cookie=cookie)

all_products = [

for page in range(1, max_pages + 1):

try:

按综合排序搜索

results = client.search(

keyword=keyword,

sort_type="GENERAL",

page=page,

limit=20

)

for item in results:

product_data = {

"标题": item.title,

"价格": float(item.price) if item.price else None,

"销量": int(item.sales),

"店铺": item.shop_name,

"商品ID": item.product_id,

"标签": item.tag_list,

"详情页链接": f"https://www.xiaohongshu.com/goods/{item.product_id}"

}

all_products.append(product_data)

print(f"第{page}页采集完成,共{len(results)}条数据")

except Exception as e:

print(f"采集第{page}页出错: {str(e)}")

break

return pd.DataFrame(all_products)

执行采集

df = fetch_product_data("面膜", max_pages=3)

df.to_csv("xiaohongshu_products.csv", index=False, encoding='utf_8_sig')

```

四、反爬策略深度优化

#1. 请求调度策略

```python

from xhs.scheduler import SmartScheduler

配置智能请求调度

scheduler = SmartScheduler(

base_delay=2, 基础间隔2秒

max_delay=5, 最大随机延迟5秒

retry_times=3, 重试次数

ip_pool=["http://proxy1:8080", "http://proxy2:8080"] 代理IP池

)

client = XhsClient(

cookie=cookie,

scheduler=scheduler

)

```

#2. 浏览器指纹伪装

```python

from xhs.stealth import StealthOptions

stealth_options = StealthOptions(

language="zh-CN",

timezone="Asia/Shanghai",

webgl_vendor="Intel Inc.",

renderer="Intel Iris OpenGL Engine"

)

client = XhsClient(

cookie=cookie,

stealth_options=stealth_options

)

```

五、数据存储与可视化

#1. 结构化存储方案

```python

import sqlite3

def save_to_database(df):

"""存储到SQLite数据库"""

conn = sqlite3.connect("xiaohongshu.db")

df.to_sql("products", conn, if_exists="replace", index=False)

conn.close()

创建分析视图

def create_analysis_view():

conn = sqlite3.connect("xiaohongshu.db")

cursor = conn.cursor()

cursor.execute("""

CREATE VIEW product_analysis AS

SELECT 店铺,

AVG(价格) as 平均价格,

SUM(销量) as 总销量,

COUNT(*) as 商品数量

FROM products

GROUP BY 店铺

ORDER BY 总销量 DESC

""")

conn.commit()

conn.close()

```

#2. 数据可视化示例

```python

import matplotlib.pyplot as plt

import seaborn as sns

价格分布分析

plt.figure(figsize=(10, 6))

sns.histplot(df["价格"].dropna(), bins=30, kde=True)

plt.title("小红书面膜商品价格分布")

plt.xlabel("价格(元)")

plt.ylabel("商品数量")

plt.savefig("price_distribution.png", dpi=300)

销量TOP10店铺

top_shops = df.groupby("店铺")["销量"].sum().nlargest(10).reset_index()

plt.figure(figsize=(12, 6))

sns.barplot(x="店铺", y="销量", data=top_shops)

plt.title("面膜销量TOP10店铺")

plt.xticks(rotation=45)

plt.savefig("top_shops.png", dpi=300)

```

六、合规性最佳实践

1. 数据使用声明:在分析报告中注明数据来源为小红书公开信息

2. 频率监控:建立日志系统记录请求频率与响应状态

3. 定期更新:每季度检查`xhs`库版本,适配平台算法更新

4. 异常处理:实现完善的错误重试机制与告警系统

```python

from xhs.exception import IPBlockError, SignError

def safe_fetch(client, method, *args, kwargs):

"""安全采集装饰器"""

max_retries = 3

for attempt in range(max_retries):

try:

return method(*args, kwargs)

except IPBlockError:

print(f"IP被封禁,第{attempt+1}次重试...")

time.sleep(60 * (attempt + 1))

except SignError:

print("签名失效,需要重新登录")

client.refresh_cookies()

except Exception as e:

print(f"未知错误: {str(e)}")

break

return None

```

通过以上技术方案,可在完全合规的前提下实现小红书商品数据的高效采集与分析。实际项目中建议结合具体业务需求,构建从数据采集到智能决策的完整闭环系统。

此内容由AI生成
上一篇:小红书爬虫数据去重与清洗避免重复采集的实操技巧
下一篇:小红书网页版私信怎么查看私信数量 每日发送条数限制说明
推荐阅读