上热门记

记录思考,分享知识,持续成长

涨粉点赞播放量 · 直播间人气

支持:抖音,快手,小红书,视频号,微博,B站,西瓜,头条,公众号,淘宝,闲鱼,百家号等各类自媒体平台。

进入涨粉商城
首页 > 小红书刷粉丝 > 正文

小红书爬虫采集笔记中的商品链接和购物车信息能抓到吗?

发布时间:2026-04-29    浏览:724 次    分类:小红书刷粉丝

在小红书电商生态中,商品笔记与购物车数据是分析用户行为、优化投放策略的核心依据。然而,平台严格的反爬机制与动态数据加载方式,使得数据采集面临技术挑战。本文将从技术原理、工具选择、实战案例三个维度,解析如何合法高效地获取商品链接与购物车信息。

一、小红书数据采集的技术壁垒

小红书的数据呈现呈现三大特征:动态渲染、接口加密、权限分级。商品笔记的展示依赖JavaScript动态加载,传统HTTP请求库(如requests)仅能获取空框架;购物车数据则通过用户登录态下的私有接口返回,需携带签名参数与加密令牌。此外,平台对高频请求实施IP封禁、验证码拦截等风控策略,进一步提升了采集难度。

以商品笔记链接为例,其URL结构通常为`https://www.xiaohongshu.com/explore/{note_id}`,其中`note_id`是笔记的唯一标识。但直接请求该URL仅能获取基础HTML,商品详情、价格等关键字段需通过调用`/api/sns/v1/note/{note_id}`接口获取,且接口返回的JSON数据包含多层嵌套的加密字段。

二、核心数据采集技术路径

#1. 商品链接采集:接口逆向与动态渲染双轨并行

路径一:接口逆向工程

通过浏览器开发者工具(F12)抓取网络请求,定位商品数据接口。例如,搜索商品时,平台会调用`/api/sns/v1/search/notes`接口,参数包含`keyword`(搜索词)、`page`(页码)等。需注意:

- 请求头伪装:需携带`User-Agent`、`Cookie`、`X-S-USER-ID`等字段,模拟真实用户行为。

- 签名算法破解:部分接口参数(如`xsec_token`)需通过逆向JavaScript代码生成,可使用PyExecJS库执行前端逻辑。

- 分页控制:小红书采用滚动加载,需模拟滚动事件触发数据分页,或直接解析`max_id`参数实现增量采集。

路径二:动态渲染解析

对于高度依赖JS渲染的页面(如用户主页),可使用Playwright或Selenium实现无头浏览器自动化。以Playwright为例:

```python

from playwright.sync_api import sync_playwright

def get_note_links(user_url):

with sync_playwright() as p:

browser = p.chromium.launch(headless=True)

page = browser.new_page()

page.goto(user_url)

滚动加载全部笔记

page.evaluate("window.scrollTo(0, document.body.scrollHeight)")

提取链接

note_links = page.query_selector_all_text("a[href*='/explore/']")

browser.close()

return note_links

```

#2. 购物车信息采集:用户态模拟与数据脱敏

购物车数据属于用户隐私范畴,采集需严格遵守平台规则。合法路径包括:

- 官方开放API:小红书提供`/api/sns/v1/cart/items`接口,但需企业级账号授权,且返回字段有限。

- 模拟用户操作:通过自动化工具登录账号,进入购物车页面提取数据。需注意:

- 登录态维护:使用`web_session`、`webId`等Cookie字段保持会话。

- 数据脱敏:避免采集用户ID、手机号等敏感信息,聚焦商品SKU、价格等公开字段。

三、高效采集工具链推荐

#1. 专用爬虫库:xhs

xhs是专为小红书设计的Python爬虫库,封装了接口签名、反爬绕过等逻辑。示例代码:

```python

from xhs import XhsClient

client = XhsClient(cookie="your_cookie_here")

搜索商品笔记

results = client.search_note(keyword="美妆", sort_type="hot")

for item in results["items"]:

print(f"笔记ID: {item['note_id']}, 商品链接: {item['items'][0]['url']}")

```

#2. 通用爬虫框架:Scrapy + Splash

对于复杂页面,可结合Scrapy与Splash(基于WebKit的渲染服务):

```python

scrapy_splash_example.py

import scrapy

from scrapy_splash import SplashRequest

class NoteSpider(scrapy.Spider):

name = "note_spider"

start_urls = ["https://www.xiaohongshu.com/user/profile/123456"

def start_requests(self):

for url in self.start_urls:

yield SplashRequest(

url,

args={"wait": 3}, 等待JS加载

endpoint="render.html",

callback=self.parse

)

def parse(self, response):

note_links = response.css("a[href*='/explore/']::attr(href)").getall()

yield {"note_links": note_links}

```

四、合规性与风险控制

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

2. 代理IP池:使用高匿代理(如BrightData、ScraperAPI)分散请求源。

3. User-Agent轮换:随机切换浏览器标识,降低被识别概率。

4. 数据用途声明:采集数据仅用于内部分析,不得用于商业竞争或用户画像。

五、实战案例:某美妆品牌商品笔记分析

目标:采集“口红”相关笔记的商品链接、价格及互动数据。

步骤:

1. 使用xhs库搜索关键词,获取笔记ID列表。

2. 调用笔记详情接口,提取商品信息。

3. 存储至MongoDB,按点赞数排序分析爆款。

代码片段:

```python

from xhs import XhsClient

import pymongo

client = XhsClient(cookie="your_cookie_here")

db = pymongo.MongoClient()["xiaohongshu"

keyword = "口红"

results = client.search_note(keyword=keyword, page_size=50)

for note in results["items"]:

detail = client.get_note_by_id(note_id=note["note_id"])

if detail["items"]:

product = detail["items"][0

db.notes.insert_one({

"title": note["title"],

"product_url": product["url"],

"price": product["price"],

"likes": note["like_count"

})

```

结语

小红书数据采集需平衡技术效率与合规风险。通过接口逆向、动态渲染解析与专用工具链,可实现商品链接与购物车信息的高效获取。但务必遵守平台规则,避免法律纠纷。对于大规模商业采集,建议优先申请小红书开放平台权限,或使用官方数据服务。