当前位置: 首页 > article >正文

小红书数据采集终极指南:xhs工具完整使用教程与实战技巧

小红书数据采集终极指南xhs工具完整使用教程与实战技巧【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs在当今社交媒体数据分析领域小红书已成为品牌营销和内容研究的重要平台。xhs作为一款专业的Python小红书数据采集工具通过封装Web端API接口为开发者提供了高效、稳定的数据获取解决方案。本教程将带你从零开始全面掌握xhs工具的使用技巧构建属于自己的小红书数据分析系统。 环境搭建与快速入门系统要求与安装配置环境检查清单要求说明推荐版本Python版本支持3.8及以上Python 3.9操作系统Windows/macOS/Linux任意主流系统网络环境可访问小红书网站稳定的网络连接依赖库requests、pycryptodome等自动安装三种安装方式对比# 方式一PyPI官方源安装最简方式 pip install xhs # 方式二源码安装获取最新特性 git clone https://gitcode.com/gh_mirrors/xh/xhs cd xhs pip install . # 方式三开发模式安装适合二次开发 pip install -e .[dev]项目架构解析xhs工具采用模块化设计核心目录结构清晰xhs/ ├── core.py # 核心功能模块 ├── help.py # 辅助函数工具 ├── exception.py # 异常处理模块 ├── example/ # 使用示例代码 │ ├── basic_usage.py │ ├── login_qrcode.py │ └── login_phone.py ├── tests/ # 单元测试文件 └── docs/ # 详细文档说明 核心功能实战演练客户端初始化与认证Cookie认证方式推荐from xhs import XhsClient # 初始化客户端 client XhsClient(cookieyour_actual_cookie) # 获取用户信息 user_info client.get_self_info() print(f用户昵称: {user_info[nickname]}) print(f粉丝数量: {user_info[fans_count]})二维码登录方式无需Cookiefrom xhs import XhsClient import qrcode # 初始化客户端 xhs_client XhsClient() # 获取登录二维码 qr_res xhs_client.get_qrcode() qr_id qr_res[qr_id] qr_code qr_res[code] # 生成二维码图片 qr qrcode.QRCode() qr.add_data(qr_res[url]) qr.make() qr.print_ascii() # 控制台显示二维码 # 等待扫码登录 while True: check_result xhs_client.check_qrcode(qr_id, qr_code) if check_result[code_status] 2: print(登录成功) print(f获取的Cookie: {xhs_client.cookie}) break内容搜索与数据获取基础搜索功能# 搜索美食探店相关笔记 search_results client.search_note( keyword美食探店, page1, page_size20 ) # 提取关键信息 for note in search_results[items]: print(f 笔记标题: {note[title]}) print(f 作者: {note[user][nickname]}) print(f❤️ 点赞: {note[like_count]}) print(f 评论: {note[comment_count]}) print(---)高级搜索参数参数类型说明示例keywordstring搜索关键词旅行攻略pageint页码1page_sizeint每页数量20sortstring排序方式generalnote_typestring笔记类型video用户数据分析获取用户发布的笔记# 获取用户所有笔记 user_notes client.get_user_notes( user_id目标用户ID, page1, page_size30 ) # 统计用户数据 total_notes len(user_notes[items]) total_likes sum(note[like_count] for note in user_notes[items]) avg_likes total_likes / total_notes if total_notes 0 else 0 print(f 用户数据分析:) print(f 发布笔记数: {total_notes}) print(f 总获赞数: {total_likes}) print(f 平均赞数: {avg_likes:.1f})️ 高级功能与优化策略签名机制与反爬处理xhs工具内置了完整的签名机制确保请求的合法性def custom_sign(uri, dataNone, a1, web_session): 自定义签名函数 # 这里可以实现自己的签名逻辑 # xhs工具已内置默认签名实现 pass # 使用自定义签名 client XhsClient(cookieyour_cookie, signcustom_sign)数据提取辅助函数xhs工具提供了丰富的辅助函数简化数据处理from xhs import help # 从笔记数据中提取图片URL note_data client.get_note_by_id(笔记ID) image_urls help.get_imgs_url_from_note(note_data) # 从笔记数据中提取视频URL video_url help.get_video_url_from_note(note_data) # 下载媒体文件 help.download_file(image_urls[0], 保存路径/图片.jpg)错误处理与重试机制完善的异常处理from xhs.exception import DataFetchError, IPBlockError, NeedVerifyError try: # 尝试获取数据 result client.search_note(keyword热门话题) except DataFetchError as e: print(f数据获取失败: {e}) # 实现重试逻辑 retry_count 3 for i in range(retry_count): try: result client.search_note(keyword热门话题) break except Exception: if i retry_count - 1: print(重试多次仍失败请检查网络或Cookie) except IPBlockError: print(IP被限制访问请更换IP或等待解封) except NeedVerifyError: print(需要验证请更新Cookie或重新登录) 实战应用场景场景一竞品分析def analyze_competitor(user_id): 分析竞品账号表现 notes client.get_user_notes(user_id, page1, page_size50) # 计算互动率 total_interaction 0 for note in notes[items]: interaction note[like_count] note[comment_count] note[share_count] total_interaction interaction avg_interaction total_interaction / len(notes[items]) return { 账号ID: user_id, 笔记数量: len(notes[items]), 平均互动量: avg_interaction, 最佳笔记: max(notes[items], keylambda x: x[like_count]) }场景二内容趋势分析def analyze_content_trend(keywords, days7): 分析内容趋势 trend_data {} for keyword in keywords: # 模拟多天数据采集 daily_stats [] for day in range(days): # 实际应用中这里需要处理时间范围参数 results client.search_note(keywordkeyword, page1) daily_stats.append({ date: fDay-{day}, count: len(results[items]), avg_likes: sum(n[like_count] for n in results[items]) / len(results[items]) }) trend_data[keyword] daily_stats return trend_data⚡ 性能优化与最佳实践请求频率控制import time import random from functools import wraps def rate_limited(max_per_minute30): 请求频率限制装饰器 min_interval 60.0 / max_per_minute def decorator(func): last_called [0.0] wraps(func) def wrapper(*args, **kwargs): elapsed time.time() - last_called[0] left_to_wait min_interval - elapsed if left_to_wait 0: time.sleep(left_to_wait) last_called[0] time.time() return func(*args, **kwargs) return wrapper return decorator # 使用装饰器 rate_limited(max_per_minute20) def safe_search(keyword): return client.search_note(keywordkeyword)数据缓存策略import json import hashlib from datetime import datetime, timedelta class DataCache: 简单数据缓存实现 def __init__(self, cache_dircache, ttl_hours24): self.cache_dir cache_dir self.ttl timedelta(hoursttl_hours) def get_cache_key(self, func_name, **kwargs): 生成缓存键 key_str f{func_name}_{json.dumps(kwargs, sort_keysTrue)} return hashlib.md5(key_str.encode()).hexdigest() def get(self, key): 获取缓存 cache_file f{self.cache_dir}/{key}.json try: with open(cache_file, r) as f: data json.load(f) cache_time datetime.fromisoformat(data[cache_time]) if datetime.now() - cache_time self.ttl: return data[result] except: pass return None def set(self, key, result): 设置缓存 cache_file f{self.cache_dir}/{key}.json data { cache_time: datetime.now().isoformat(), result: result } with open(cache_file, w) as f: json.dump(data, f) 故障排除与调试常见问题解决方案问题1签名失败错误信息SignError 或 window._webmsxyw is not a function 解决方案 1. 检查Cookie是否有效 2. 更新xhs工具到最新版本 3. 尝试使用二维码登录获取新Cookie问题2请求被限制错误信息IPBlockError 或 403 Forbidden 解决方案 1. 降低请求频率 2. 使用代理IP轮换 3. 添加随机延迟问题3数据解析异常错误信息DataFetchError 或 JSON解析错误 解决方案 1. 检查API响应格式是否变化 2. 更新数据模型定义 3. 查看官方文档更新调试技巧# 启用详细日志 import logging logging.basicConfig(levellogging.DEBUG) logger logging.getLogger(__name__) # 调试请求 import requests # 使用requests的调试功能 import http.client http.client.HTTPConnection.debuglevel 1 # 或者使用更简单的方式 client XhsClient(cookieyour_cookie, debugTrue) 进阶应用构建完整的数据管道数据采集管道示例from concurrent.futures import ThreadPoolExecutor import pandas as pd class XhsDataPipeline: 小红书数据采集管道 def __init__(self, cookie): self.client XhsClient(cookie) self.data_cache DataCache() def collect_user_data(self, user_ids): 批量采集用户数据 results [] with ThreadPoolExecutor(max_workers5) as executor: futures [] for user_id in user_ids: future executor.submit(self._get_user_info, user_id) futures.append(future) for future in futures: try: results.append(future.result()) except Exception as e: print(f采集失败: {e}) return pd.DataFrame(results) def _get_user_info(self, user_id): 获取单个用户信息 cache_key self.data_cache.get_cache_key(user_info, user_iduser_id) cached self.data_cache.get(cache_key) if cached: return cached # 实际采集逻辑 user_info self.client.get_self_info() # 这里需要根据实际情况调整 notes self.client.get_user_notes(user_id) result { user_id: user_id, nickname: user_info.get(nickname), note_count: len(notes.get(items, [])), fans_count: user_info.get(fans_count, 0) } self.data_cache.set(cache_key, result) return result数据存储方案import sqlite3 import json from datetime import datetime class XhsDataStorage: 数据存储管理器 def __init__(self, db_pathxhs_data.db): self.conn sqlite3.connect(db_path) self.create_tables() def create_tables(self): 创建数据表 cursor self.conn.cursor() # 用户表 cursor.execute( CREATE TABLE IF NOT EXISTS users ( user_id TEXT PRIMARY KEY, nickname TEXT, fans_count INTEGER, note_count INTEGER, created_at TIMESTAMP, updated_at TIMESTAMP ) ) # 笔记表 cursor.execute( CREATE TABLE IF NOT EXISTS notes ( note_id TEXT PRIMARY KEY, user_id TEXT, title TEXT, content TEXT, like_count INTEGER, comment_count INTEGER, share_count INTEGER, tags TEXT, created_at TIMESTAMP, collected_at TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (user_id) ) ) self.conn.commit() def save_note(self, note_data): 保存笔记数据 cursor self.conn.cursor() # 保存用户信息 user_info note_data.get(user, {}) cursor.execute( INSERT OR REPLACE INTO users (user_id, nickname, fans_count, note_count, updated_at) VALUES (?, ?, ?, ?, ?) , ( user_info.get(user_id), user_info.get(nickname), user_info.get(fans_count, 0), user_info.get(note_count, 0), datetime.now() )) # 保存笔记信息 cursor.execute( INSERT OR REPLACE INTO notes (note_id, user_id, title, content, like_count, comment_count, share_count, tags, created_at, collected_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , ( note_data.get(note_id), user_info.get(user_id), note_data.get(title, ), note_data.get(desc, ), note_data.get(like_count, 0), note_data.get(comment_count, 0), note_data.get(share_count, 0), json.dumps(note_data.get(tag_list, [])), datetime.fromtimestamp(note_data.get(time, 0)), datetime.now() )) self.conn.commit() 总结与最佳实践建议核心要点回顾合法合规使用仅采集公开数据控制请求频率尊重平台规则数据质量优先建立完善的数据验证和清洗流程系统稳定性实现错误重试、频率限制、数据缓存机制可扩展性设计采用模块化设计便于功能扩展和维护性能优化建议优化方向具体措施预期效果请求优化使用连接池、批量请求减少网络开销数据处理异步处理、流式处理提高吞吐量存储优化数据库索引、分区存储加快查询速度缓存策略多级缓存、智能过期减少重复请求后续学习资源官方文档查看项目中的docs/目录获取详细API文档示例代码参考example/目录中的完整使用示例源码学习研究xhs/核心模块了解实现原理社区交流关注项目更新和最佳实践分享通过本教程的学习你已经掌握了xhs工具的核心功能和高级技巧。现在可以开始构建自己的小红书数据分析系统探索更多有趣的应用场景。记住技术是为业务服务的合理使用工具才能创造最大价值。提示在实际使用过程中建议定期查看项目更新关注API变化并及时调整代码以适应平台更新。同时始终遵守相关法律法规和平台使用条款确保数据采集的合法性和伦理性。【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

小红书数据采集终极指南:xhs工具完整使用教程与实战技巧

小红书数据采集终极指南:xhs工具完整使用教程与实战技巧 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在当今社交媒体数据分析领域,小红书已成为品…...

歌词滚动姬:从零开始制作专业LRC歌词的终极指南

歌词滚动姬:从零开始制作专业LRC歌词的终极指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 你是否曾经为喜爱的歌曲制作歌词时,因为时间…...

LTspice模型库扩展实战:以ROHM MOSFET为例手把手教你添加第三方器件

LTspice模型库扩展实战:以ROHM MOSFET为例手把手教你添加第三方器件 在硬件设计领域,仿真工具的模型库丰富程度直接决定了设计效率。LTspice作为业界广泛使用的免费仿真软件,其原生库虽覆盖常见器件,但面对ROHM等厂商的新型功率器…...

Windows 11终极优化指南:用Win11Debloat轻松清理系统垃圾

Windows 11终极优化指南:用Win11Debloat轻松清理系统垃圾 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化…...

AI代码生成插件continue用vscode源码编译步骤

AI代码生成开源工具continue,由于其工作需要想在其上面做二次开发。但由于笔者个人是一个C/C程序开发者。将次代码下载至本地,编译成插件费了些时间,因此本篇对其编译过程作以记录。笔者用的continue源码是目前github上最新版本 1.2.17。下来…...

Leather Dress Collection惊艳效果:Leather Short Dress短裙摆动轨迹与物理模拟真实度

Leather Dress Collection惊艳效果:Leather Short Dress短裙摆动轨迹与物理模拟真实度 1. 项目概述 Leather Dress Collection 是基于Stable Diffusion 1.5技术开发的LoRA模型集合,专注于生成各类皮革服装风格的图像。这个系列特别擅长呈现皮革材质特有…...

MinIO双端口配置全指南:解决Web控制台和Java客户端同时访问的难题

MinIO双端口配置全指南:解决Web控制台和Java客户端同时访问的难题 在云原生存储领域,MinIO凭借其轻量级、高性能和S3兼容性成为众多开发者的首选。然而当我们将MinIO部署在Docker环境中时,经常会遇到一个看似简单却令人困惑的问题&#xff1a…...

实时手机检测-通用实战案例:电商质检/安防巡检中手机识别落地应用

实时手机检测-通用实战案例:电商质检/安防巡检中手机识别落地应用 1. 引言 你有没有想过,在电商仓库里,每天成千上万的手机需要人工检查外观瑕疵,不仅效率低下,还容易漏检?或者在安防监控中,如…...

uni-app前端H5页面底部内容被tabbar遮挡的问题解决

使用 uni-app 框架开发的一个项目,发现 H5 端页面底部的内容被导航栏(Tabbar)遮挡,小程序端可以正常显示。 查阅资料得知,uni-app 新增了2个 CSS 变量:--window-top 和 --window-bottom ,详细说…...

用户态与内核态:权限与地盘的秘密

内核态、用户态本质就是:权限不一样、地盘不一样。一句话总结用户态(User Mode):应用程序跑的地方,权限极低,不能乱搞硬件、不能乱改内存。内核态(Kernel Mode):操作系统…...

2026年,java离职潮彻底消失了。。。

最近刷技术圈,OpenClaw简直是刷屏级存在——GitHub星标疯涨,同事群里全在转,连隔壁做运维的老哥都在问 “这玩意儿能不能帮我写脚本”。文末可免费领取龙虾Open Clawa超详细安装教程但对Java 程序员来说,这波风口背后,…...

原圈科技AI营销:破解高净值行业获客难,实测ROI提升45%。

原圈科技的AI营销解决方案,在服务泛地产、金融等高净值行业的实践中,被普遍视为一套体系化优势显著的智慧营销平台。其在数据驱动、模型融合方面表现突出,通过一体化客户运营平台,有效帮助企业提升线索转化与客户复购,…...

零代码自动化:OpenClaw+ollama-QwQ-32B快速搭建个人RSS阅读器

零代码自动化:OpenClawollama-QwQ-32B快速搭建个人RSS阅读器 1. 为什么需要个人RSS阅读器 在这个信息爆炸的时代,我发现自己每天要花费大量时间在不同平台间切换,只为获取关注的几个固定信息源。传统的RSS阅读器虽然能聚合内容,…...

DeOldify在Unity游戏开发中的应用:为复古游戏素材自动上色

DeOldify在Unity游戏开发中的应用:为复古游戏素材自动上色 最近和几个做独立游戏的朋友聊天,他们都在为美术资源发愁。尤其是那些想做复古风格游戏的团队,手头有一堆黑白线稿或者老旧的像素素材,想给它们上色,工作量太…...

华天动力OA8000办公系统TemplateService接口漏洞实战复现(附检测脚本)

华天动力OA8000办公系统TemplateService接口漏洞深度解析与实战指南 在数字化办公日益普及的今天,企业级OA系统承载着大量敏感数据与核心业务流程。作为国内知名的OA解决方案提供商,华天动力OA8000系统广泛应用于政企机构,其安全性直接关系到…...

《智能体设计模式》第六章精读 | 规划模式(Planning Pattern)——让智能体从“执行命令”变成“制定计划”的智慧体

“智能不只是做事的能力,更是知道先做什么、后做什么。” —— Antonio Gulli,《智能体设计模式》 一、回顾:从工具到计划 在第五章中,我们让AI第一次“动了起来”—— 通过工具模式(Tool Pattern)&#…...

Spring Kafka @KafkaListener源码剖析

在 Spring Boot 中集成 Kafka,通过 KafkaListener 注解可快速实现消息消费的编码开发,这种通过声明式的方式极大简化了消息监听器的配置,提升了开发效率。这里尝试通过分析 KafkaListener 的关键源码,弄清楚它背后的原理。 一、K…...

GLM-4.7-Flash快速入门:Ollama可视化界面,10分钟开启AI对话

GLM-4.7-Flash快速入门:Ollama可视化界面,10分钟开启AI对话 1. 认识GLM-4.7-Flash:30B级别的高效模型 GLM-4.7-Flash是智谱AI推出的30B参数规模混合专家模型(MoE),在轻量级部署场景下展现出卓越的性能表现…...

通义千问2.5-7B应用实战:快速搭建智能问答助手,小白也能做

通义千问2.5-7B应用实战:快速搭建智能问答助手,小白也能做 1. 引言 1.1 为什么选择通义千问2.5-7B 通义千问2.5-7B-Instruct是阿里最新发布的中等规模语言模型,拥有70亿参数,在保持轻量化的同时展现出惊人的多任务处理能力。这…...

Python 3.15多解释器隔离配置终极对照表:CPython 3.14 vs 3.15 vs 3.15.1-beta2,12项关键行为变更速查

第一章:Python 3.15多解释器隔离配置的演进背景与核心定位Python 3.15 引入的多解释器(PEP 684)增强支持,标志着 CPython 运行时在并发模型上的范式跃迁。此前,GIL(全局解释器锁)将整个进程绑定…...

3步搭建本地智能图像检索工具:千万级图库秒级搜索实战指南

3步搭建本地智能图像检索工具:千万级图库秒级搜索实战指南 【免费下载链接】ImageSearch 基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享 项目地址: https://gitcode.com/gh_mirrors/im/ImageSearch 在数字内容爆炸的时代&…...

没有独立显卡也能跑!在Windows10上零基础部署微软OmniParser屏幕解析模型(保姆级避坑指南)

没有独立显卡也能跑!在Windows10上零基础部署微软OmniParser屏幕解析模型(保姆级避坑指南) 当第一次听说微软开源的OmniParser屏幕解析模型时,许多开发者都会被其强大的功能所吸引——它能将用户界面截图自动解析为结构化数据&…...

5个强力方案:让老旧Mac用户的系统升级难题获得完美解决

5个强力方案:让老旧Mac用户的系统升级难题获得完美解决 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 问题导入:你的Mac被时代抛弃了吗&#xff1…...

Qwen2.5-Coder-1.5B算法实现实战:常见排序与搜索算法

Qwen2.5-Coder-1.5B算法实现实战:常见排序与搜索算法 1. 引言 算法是编程的基石,无论是面试还是实际开发,排序和搜索算法都是必须掌握的核心技能。但对于初学者来说,理解这些算法的原理并正确实现它们往往是个挑战。 今天我们来…...

避坑指南:Jetson NX上GStreamer硬解码MP4/USB摄像头的常见问题解决方案

Jetson NX硬解码实战:GStreamer处理MP4与USB摄像头的避坑手册 在边缘计算领域,Jetson NX凭借其强大的NVIDIA硬件加速能力成为视频处理的热门平台。然而,当开发者尝试使用GStreamer处理本地MP4文件和USB摄像头时,往往会遇到各种&qu…...

英雄联盟智能助手League Akari:从新手到高手的终极完全指南

英雄联盟智能助手League Akari:从新手到高手的终极完全指南 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在…...

Ryujinx技术障碍攻关指南:从入门到精通

Ryujinx技术障碍攻关指南:从入门到精通 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款用C#编写的开源Nintendo Switch模拟器,旨在为用户提供卓越…...

Phi-3-Mini-128K快速上手:3步完成本地部署,支持代码解释与长文档问答

Phi-3-Mini-128K快速上手:3步完成本地部署,支持代码解释与长文档问答 1. 工具简介 Phi-3-Mini-128K是一款基于微软Phi-3-mini-128k-instruct模型开发的轻量级对话工具。它最大的特点是能在普通家用电脑上运行,不需要连接网络,也…...

抖音无水印下载技术解密:从原理到全场景方案

抖音无水印下载技术解密:从原理到全场景方案 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 抖音短视频无水印下载…...

从沙子到AI:硅基文明简史

从沙子到AI:硅基文明简史 地球表面最常见的物质,莫过于随处可见的沙子;而人类文明最具革命性的突破,恰恰源于这看似平凡的沙子。沙子的核心成分是二氧化硅,经过高温冶炼、精细加工,它蜕变为硅——这种半导体…...