头图
本软件工具仅限于学术交流使用,严格遵循相关法律法规,符合平台内容合法性,禁止用于任何商业用途!

一、背景概述

1.1 开发背景

小红书作为国内领先的社交电商平台,拥有庞大的用户群体和高活跃度,其笔记评论区域蕴藏着丰富的用户反馈信息。在合法合规、尊重平台规则及用户隐私的前提下,对小红书评论数据进行合理采集与分析,有助于企业深入了解消费者对产品与品牌的真实评价,从而更好地洞察市场需求、优化产品策略。

基于这一需求,我利用python开发了一款数据采集辅助工具 ——【爬小红书搜索评论软件】。该工具严格遵循平台公开的接口规范和数据使用政策,确保数据采集行为的合法性与合规性。

软件支持两种合规的数据采集模式:

1、基于关键词的评论采集:在平台规则允许的范围内,用户输入合法的笔记关键词,软件通过关键词搜索获取相关笔记链接,并从中提取允许访问的评论数据。
2、基于笔记链接的评论采集:用户提供合法获取且平台允许分析的笔记链接,软件依此合规地提取相关评论信息。

用户可根据实际需求,在合法合规的前提下选择其中一种模式进行数据采集。

1.2 软件界面

软件界面,如下:

软件运行界面

1.3 结果展示

在合法合规及遵守平台规则的前提下,展示符合数据使用范围的爬取结果示例:

爬取结果 1 - 笔记数据:

笔记.csv

爬取结果 2 - 评论数据:

评论.csv

1.4 操作演示视频

软件在合法合规操作流程下的运行演示:

https://www.bilibili.com/video/BV1uDtneqEhA

1.5 软件使用说明

几点重要说明,请仔细阅读:

1. Windows用户可直接双击打开使用,无需Python运行环境,操作便捷。
2. 软件严格通过平台公开允许的接口协议进行数据交互,并非通过模拟浏览器等RPA类工具,确保稳定性与合规性 。
3. 先在cookie.txt中填入符合平台规定获取方式的自己的cookie值,方便重复使用(内附合法合规的cookie获取方法)。
4. 支持按平台允许的笔记类型(综合/视频/图文)和排序方式(综合/最新/最热)进行数据获取。
5. 支持多个的设置项有:在平台规则允许范围内的笔记关键词、笔记链接、评论关键词、IP属地 。
6. 每个关键词最多可采集220条笔记,与网页端在平台规则下的搜索数量一致。
7. 爬取过程中,每爬一页,存一次csv。并非爬完最后一次性保存!防止因异常中断导致丢失前面的数据(每条间隔1~2s,避免对平台服务器造成过大压力)。
8. 爬取过程中,有log文件详细记录运行过程,方便回溯,同时确保记录内容符合平台隐私政策。
9. 爬取过程中,在符合平台数据处理规则下,评论筛选同时进行。并非全部评论爬完再一次性筛选!所以效率较高!
10. 笔记csv含10个字段,有:关键词,页码,笔记id,笔记链接,笔记标题,笔记类型,点赞数,用户id,用户主页链接,用户昵称(确保各字段数据获取与使用符合平台及用户隐私相关规定)。
11. 评论csv含10个字段,有:笔记链接,页码,评论者昵称,评论者id,评论者主页链接,评论时间,评论IP属地,评论点赞数,评论级别,评论内容(确保各字段数据获取与使用符合平台及用户隐私相关规定)。

以上。

二、主要技术

软件全部模块采用 python 语言开发,主要分工如下:

  • tkinter:GUI软件界面
  • requests:通过合法合规的接口进行爬虫请求
  • json:解析响应数据
  • pandas:保存csv结果、数据清洗
  • logging:日志记录,确保记录内容符合平台与法律规定

出于版权考虑,暂不公开源码,仅向用户提供软件使用。同时,确保软件使用过程严格遵循平台规则与相关法律法规。

三、功能介绍

3.0 填写 cookie

开始采集前,需按照平台规定的合法方式获取并把自己的 cookie 值填入 cookie.txt 文件。

cookie 获取说明 1:(确保获取方法符合平台规则)

获取cookie方法

3.1 根据关键词爬评论

爬取思路:在遵循平台规则下,通过合法输入笔记关键词 -> 获取平台允许访问的笔记链接 -> 提取允许采集的评论

先填写左上区在平台规则允许范围内的笔记筛选项,再填写右上区符合平台规定的评论筛选项,点击按钮 1 进行合规的数据采集。

3.2 根据笔记链接爬评论

爬取思路:使用合法获取且平台允许分析的笔记链接 -> 提取允许采集的评论

先填写中上区合法合规的笔记链接,再填写右上区符合平台规定的评论筛选项,点击按钮 2 进行合规的数据采集。

四、重要!技术栈

软件全部模块采用python语言开发,主要分工如下:

tkinter:GUI软件界面
requests:爬虫请求
json:  解析响应数据
pandas:保存csv结果、数据清洗
logging:日志记录

软件界面核心代码:

# 创建主窗口
root = tk.Tk()
root.title('爬小红书搜索评论软件v1.1')
# 设置窗口大小
root.minsize(width=900, height=650)

爬虫部分代码:

# 发送请求
r = requests.get(url, headers=h1)
# 接收响应数据
json_data = r.json()

保存结果数据核心代码:

# 保存数据到DF
df = pd.DataFrame(
    {
        '笔记链接': 'https://www.xiaohongshu.com/explore/' + note_id,
        '笔记链接_长': note_url2,
        '页码': page,
        '评论者昵称': nickname_list,
        '评论者id': user_id_list,
        '评论者主页链接': user_link_list,
        '评论时间': create_time_list,
        '评论IP属地': ip_list,
        '评论点赞数': like_count_list,
        '评论级别': comment_level_list,
        '评论内容': content_list,
    }
)
# 保存到csv
df.to_csv(self.result_file2, mode='a+', header=header, index=False, encoding='utf_8_sig')

日志记录功能核心代码:

def get_logger(self):
    self.logger = logging.getLogger(__name__)
    # 日志格式
    formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
    # 日志级别
    self.logger.setLevel(logging.DEBUG)
    # 控制台日志
    sh = logging.StreamHandler()
    log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
    # info日志文件名
    info_file_name = time.strftime("%Y-%m-%d") + '.log'
    # 将其保存到特定目录
    case_dir = r'./logs/'
    info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
                                            when='MIDNIGHT',
                                            interval=1,
                                            backupCount=7,
                                            encoding='utf-8')
    self.logger.addHandler(sh)
    sh.setFormatter(log_formatter)
    self.logger.addHandler(info_handler)
    info_handler.setFormatter(log_formatter)
    return self.logger

END、原创声明

软件首发于众公号 "老男孩的平凡之路",仅限于学术交流技术探讨,请勿用于商业用途,欢迎在遵守相关规则和法律的前提下交流探讨!


马哥python说
12 声望1 粉丝