Python 爬取小红书搜索关键词下的笔记数据与可视化分析
使用 Python 编写一个简单的爬虫程序来从小红书抓取与指定关键词相关的笔记数据,并对这些数据进行基本的数据分析,包括词云图和柱状图的绘制。
本教程分为两大部分:爬虫部分 和 数据分析部分。
- 爬虫部分:从指定关键词的小红书中获取相关笔记的信息(如标题、链接、用户信息、互动数据等),并保存为 CSV 文件。
- 数据分析部分:加载生成的 CSV 文件,进行文本清洗、分词,然后生成词云图和柱状图以直观展示数据特征。
必要的第三方库
- Python
- Requests:发送 HTTP 请求
- execjs:执行 JavaScript 代码(用于 js 逆向)
- json & csv:处理 JSON 数据和 CSV 文件写入
- pandas: 数据处理
- jieba: 中文分词
- matplotlib, wordcloud: 数据可视化
爬虫逻辑详解
小红书对请求有反爬机制,需要通过 Cookie 和 签名来模拟合法请求。
获取 Cookie 设置请求头
- 打开 小红书官网 并登录。
- 在浏览器开发者工具中找到并复制请求头中的 cookie 字段。
- 将获取到的 cookie 替换到代码中的相应位置。
- 根据需要修改 base_headers 中的 cookie 值。
base_headers = {
"accept": "application/json, text/plain, */*",
"cookie": "your_cookie_here" # 替换为你自己的 cookie
}
使用 JavaScript 生成请求签名
使用 execjs 调用本地的 xhs.js 文件完成签名生成。
xhs_sign_obj = execjs.compile(open('xhs.js', encoding='utf-8').read())
sign_header = xhs_sign_obj.call('sign', uri, data, base_headers.get('cookie', ''))
根据关键词搜索笔记,遍历多页数据
def keyword_search(keyword):
search_url = "https://edith.xiaohongshu.com/api/sns/web/v1/search/notes"
page_count = 20 # 爬取的页数,一页有 20 条笔记,最多只能爬取 220 条笔记
for page in (, page_count + ):
data = {
: [],
: [, , ],
: keyword,
: ,
: page,
: ,
: xhs_sign_obj.call(),
:
}
response = post_request(search_url, uri=, data=data)
json_data = response.json()
:
notes = json_data[][]
:
()
note notes:
note_id = note[]
xsec_token = note[]
(note_id) != :
get_note_info(note_id, xsec_token)








