小红书API终极指南5分钟掌握Python自动化数据采集技巧【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs你是否曾想轻松获取小红书上的热门内容数据或者想要分析竞品账号的运营策略今天我要介绍的这个神奇工具——xhs Python库将彻底改变你处理小红书数据的方式这是一个基于小红书Web端请求封装的Python库让你能够以编程方式访问小红书的各种数据接口。场景引入当数据采集遇到技术难题想象一下这个场景作为内容运营人员你需要每天手动收集100个竞品账号的最新笔记数据包括点赞数、评论数、收藏数还要分析他们的发布时间规律。手动操作不仅耗时耗力还容易出错。更糟糕的是小红书的反爬机制越来越严格普通爬虫很难稳定工作。这就是xhs库诞生的背景它通过模拟真实浏览器行为绕过小红书的反爬机制让你能够稳定、高效地获取所需数据。核心概念什么是xhs库xhs是一个专门为小红书设计的Python数据采集库它封装了复杂的签名算法和请求逻辑让你可以像调用普通API一样访问小红书的数据。核心功能亮点自动签名处理复杂的x-s、x-t签名算法稳定可靠内置重试机制和错误处理多种登录方式支持二维码登录和Cookie登录丰富的数据接口获取笔记、用户信息、搜索内容等实战演练从零开始使用xhs库第一步环境搭建首先我们需要安装必要的依赖# 安装xhs库 pip install xhs # 安装playwright用于浏览器模拟 pip install playwright # 安装浏览器环境 playwright install # 下载反检测脚本 curl -O https://cdn.jsdelivr.net/gh/requireCool/stealth.min.js/stealth.min.js第二步获取小红书Cookie要使用xhs库你需要获取小红书网站的Cookie。最简单的方法是使用浏览器登录小红书网页版打开开发者工具F12在控制台输入document.cookie复制输出的Cookie字符串关键Cookie字段包括a1用户身份标识web_session会话标识webId设备标识第三步编写第一个数据采集脚本让我们创建一个简单的脚本来获取单篇笔记的详细信息import datetime import json from time import sleep from playwright.sync_api import sync_playwright from xhs import DataFetchError, XhsClient, help def sign(uri, dataNone, a1, web_session): 签名函数用于生成请求签名 for _ in range(10): try: with sync_playwright() as playwright: stealth_js_path stealth.min.js # 你下载的文件路径 chromium playwright.chromium browser chromium.launch(headlessTrue) browser_context browser.new_context() browser_context.add_init_script(pathstealth_js_path) context_page browser_context.new_page() context_page.goto(https://www.xiaohongshu.com) browser_context.add_cookies([ {name: a1, value: a1, domain: .xiaohongshu.com, path: /} ]) context_page.reload() sleep(1) encrypt_params context_page.evaluate( ([url, data]) window._webmsxyw(url, data), [uri, data] ) return { x-s: encrypt_params[X-s], x-t: str(encrypt_params[X-t]) } except Exception: pass raise Exception(签名失败) # 使用示例 if __name__ __main__: cookie 你的小红书Cookie xhs_client XhsClient(cookie, signsign) # 获取笔记详情 note_id 6505318c000000001f03c5a6 # 示例笔记ID note xhs_client.get_note_by_id(note_id) # 提取图片URL image_urls help.get_imgs_url_from_note(note) print(f笔记标题{note.get(title, 无标题)}) print(f点赞数{note.get(likes, 0)}) print(f图片数量{len(image_urls)})第四步进阶功能探索xhs库提供了丰富的功能接口让我们看看几个实用的例子获取用户主页信息# 获取用户信息 user_info xhs_client.get_user_info(用户ID) print(f用户名{user_info[nickname]}) print(f粉丝数{user_info[fans]}) print(f获赞与收藏{user_info[interactions]})搜索相关内容from xhs import SearchNoteType, SearchSortType # 搜索美食相关笔记 search_results xhs_client.get_note_by_keyword( keyword美食, page1, page_size20, sortSearchSortType.GENERAL, note_typeSearchNoteType.VIDEO ) for note in search_results[items]: print(f标题{note[title]}) print(f作者{note[user][nickname]}) print(f点赞{note[likes]})获取推荐流from xhs import FeedType # 获取穿搭类推荐内容 fashion_feed xhs_client.get_home_feed( feed_typeFeedType.FASION, cursor ) for note in fashion_feed[items]: print(f笔记ID{note[id]}) print(f内容{note[desc][:50]}...) # 显示前50个字符进阶技巧构建稳定可靠的数据采集系统技巧一多账号轮换策略为了防止被封禁建议使用多个账号进行轮换class MultiAccountXhsClient: def __init__(self, accounts): self.accounts accounts self.current_index 0 def get_client(self): account self.accounts[self.current_index] self.current_index (self.current_index 1) % len(self.accounts) return XhsClient(account[cookie], signaccount[sign_func]) def safe_request(self, func, *args, **kwargs): 安全请求自动切换账号 for _ in range(len(self.accounts)): try: client self.get_client() return func(client, *args, **kwargs) except Exception as e: print(f请求失败切换账号{e}) continue raise Exception(所有账号均请求失败)技巧二数据存储与处理采集到的数据需要妥善存储和处理import pandas as pd import sqlite3 from datetime import datetime class DataManager: def __init__(self, db_pathxhs_data.db): self.conn sqlite3.connect(db_path) self.create_tables() def create_tables(self): 创建数据表 self.conn.execute( CREATE TABLE IF NOT EXISTS notes ( id TEXT PRIMARY KEY, title TEXT, content TEXT, likes INTEGER, collects INTEGER, comments INTEGER, user_id TEXT, create_time TIMESTAMP, update_time TIMESTAMP ) ) def save_note(self, note_data): 保存笔记数据 self.conn.execute( INSERT OR REPLACE INTO notes VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) , ( note_data[id], note_data.get(title, ), note_data.get(desc, ), note_data.get(likes, 0), note_data.get(collects, 0), note_data.get(comments, 0), note_data.get(user, {}).get(user_id, ), datetime.now(), datetime.now() )) self.conn.commit() def export_to_excel(self, output_pathxhs_data.xlsx): 导出数据到Excel df pd.read_sql_query(SELECT * FROM notes, self.conn) df.to_excel(output_path, indexFalse) print(f数据已导出到{output_path})技巧三异常处理与监控import logging from xhs.exception import DataFetchError, IPBlockError # 配置日志 logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(xhs_crawler.log), logging.StreamHandler() ] ) def safe_crawl_note(client, note_id, max_retries3): 安全爬取笔记带重试机制 for attempt in range(max_retries): try: note client.get_note_by_id(note_id) logging.info(f成功获取笔记{note_id}) return note except DataFetchError as e: logging.warning(f数据获取失败第{attempt1}次重试{e}) time.sleep(2 ** attempt) # 指数退避 except IPBlockError as e: logging.error(fIP被封禁{e}) # 这里可以添加IP切换逻辑 break except Exception as e: logging.error(f未知错误{e}) break logging.error(f获取笔记失败{note_id}) return None资源汇总一站式学习路径官方文档与示例这个项目的文档结构非常清晰提供了丰富的示例代码基础使用指南docs/basic.rst - 包含安装、配置和基本用法示例代码目录example/ - 包含多个实用示例核心源码xhs/ - 库的核心实现代码核心模块解析让我们看看项目的主要模块结构xhs/core.py- 核心客户端类包含所有API方法xhs/help.py- 辅助函数如图片URL提取、签名生成等xhs/exception.py- 自定义异常类xhs-api/app.py- Flask API服务实现快速上手项目如果你想快速体验可以使用Docker一键启动# 启动API服务 docker run -it -d -p 5005:5005 reajason/xhs-api:latest然后通过HTTP请求调用import requests # 调用签名服务 response requests.post( http://localhost:5005/sign, json{uri: /api/sns/web/v1/feed, data: {}} ) signature response.json()实用场景小红书数据采集的无限可能场景一竞品分析自动化假设你运营一个美妆账号需要监控竞品的表现def monitor_competitors(competitor_ids): 监控竞品账号 competitors_data [] for user_id in competitor_ids: try: # 获取用户信息 user_info xhs_client.get_user_info(user_id) # 获取最新笔记 user_notes xhs_client.get_notes_by_user(user_id, page1) competitor_data { user_id: user_id, nickname: user_info[nickname], fans: user_info[fans], latest_note_likes: user_notes[0][likes] if user_notes else 0, avg_likes: calculate_avg_likes(user_notes[:10]), update_time: datetime.now() } competitors_data.append(competitor_data) except Exception as e: print(f监控用户 {user_id} 失败{e}) return competitors_data场景二内容趋势分析def analyze_content_trend(keywords, days7): 分析内容趋势 trend_data {} for keyword in keywords: # 搜索相关笔记 results xhs_client.get_note_by_keyword( keywordkeyword, page1, page_size50 ) # 分析数据 total_likes sum(note[likes] for note in results[items]) avg_likes total_likes / len(results[items]) if results[items] else 0 trend_data[keyword] { total_notes: len(results[items]), total_likes: total_likes, avg_likes: avg_likes, top_note: max(results[items], keylambda x: x[likes]) if results[items] else None } return trend_data场景三个人账号数据监控class PersonalAccountMonitor: def __init__(self, xhs_client): self.client xhs_client def daily_report(self): 生成日报 report { date: datetime.now().strftime(%Y-%m-%d), notes_published: self.get_today_notes_count(), total_likes: self.get_today_likes(), new_followers: self.get_new_followers(), top_performing_note: self.get_top_note(), suggestions: self.generate_suggestions() } return report def get_today_notes_count(self): 获取今日发布笔记数 # 实现逻辑 pass def get_today_likes(self): 获取今日总点赞数 # 实现逻辑 pass最佳实践与注意事项合规使用建议尊重平台规则遵守小红书的用户协议和服务条款合理频率请求避免高频请求建议设置合理的间隔时间数据使用规范仅用于个人学习和研究目的隐私保护不收集用户隐私数据性能优化技巧使用连接池复用HTTP连接缓存结果对不常变的数据进行缓存异步处理使用异步IO提高并发性能批量操作尽量减少单个请求次数错误处理策略class XhsCrawler: def __init__(self): self.error_count 0 self.success_count 0 def crawl_with_retry(self, func, *args, max_retries3, **kwargs): 带重试的爬取 for i in range(max_retries): try: result func(*args, **kwargs) self.success_count 1 return result except Exception as e: self.error_count 1 if i max_retries - 1: raise wait_time 2 ** i # 指数退避 print(f第{i1}次失败等待{wait_time}秒后重试...) time.sleep(wait_time) def get_status(self): 获取爬虫状态 total self.success_count self.error_count success_rate self.success_count / total if total 0 else 0 return { success: self.success_count, error: self.error_count, success_rate: f{success_rate:.2%} }结语开启小红书数据之旅通过xhs库你可以轻松实现小红书数据的自动化采集和分析。无论是个人创作者想要优化内容策略还是企业需要监控竞品动态这个工具都能为你提供强大的支持。记住技术只是手段真正的价值在于如何利用数据做出更好的决策。合理使用工具尊重平台规则让数据为你的创作和运营赋能立即开始你的小红书数据探索之旅吧从简单的笔记数据采集开始逐步构建完整的数据分析体系你会发现数据驱动的决策原来如此简单高效。想要了解更多高级用法和最佳实践记得查阅项目中的示例代码和文档那里有更多宝藏等待你去发现【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考