微博数据采集器:搜索、主页、评论一键搞定

以自己的实际开发经历分享一个GUI软件的实现过程,和他们共同探讨开发技术。

一、背景分析与结果展示

1.1 开发背景

我是 @马哥python说,一枚10年+程序猿,现全职独立开发。

微博作为中国最具影响力的社交媒体平台之一,以其实时性和庞大的KOL用户群体,成为舆论爆发和信息传播的首选阵地。之前,为了满足不同的数据需求,我曾分别开发了针对关键词搜索的“爬微博搜索软件”、针对特定博主的“爬微博博主软件”以及针对微博评论的“爬微博评论软件”。

虽然采集性能稳定、数据全面,但也有部分用户反馈,采集需求涵盖帖子和评论,需要频繁地切换软件,影响体验。为了满足这一场景,我正式将这三款软件合并,推出全新的“爬微博聚合软件”。该软件集成了关键词搜索、博主主页采集、评论采集三大核心功能,旨在为用户提供一站式的微博数据采集解决方案。

1.2 适用人群与场景

该软件适用于:

  • 学术研究者:采集微博相关话题数据,用于社会舆情分析、网络传播研究等;
  • 市场从业者:监测品牌关键词搜索结果、竞品博主动态、热门营销内容的评论反馈;
  • 内容创作者:分析优质博主的内容风格、热门话题趋势,为自身创作提供参考;
  • 数据爱好者:收集感兴趣领域的微博数据,进行个性化数据分析与可视化。

1.3 结果展示

  • 功能1,根据关键词采集帖子

软件界面1:
界面1:微博搜索帖子

采集结果1:(含11个字段:关键词,页码,微博id,微博链接,用户昵称,用户主页链接,发布时间,转发数,评论数,点赞数,微博内容)
结果1:微博搜索帖子
  • 功能2,根据主页链接采集帖子

软件界面2:
界面2:根据主页采集帖子

采集结果2:(含13个字段:博主昵称,博主id,页码,微博id,微博bid,微博链接,发布时间,发布于,转发数,评论数,点赞数,话题标签,微博内容)
结果2:根据主页采集帖子
  • 功能3,根据帖子链接采集评论

软件界面3:
界面3:根据帖子采集评论

采集结果3:(含14个字段:微博链接,微博id,页码,评论者昵称,评论者粉丝数,评论者关注数,评论者主页链接,评论者性别,评论者签名,评论时间,点赞数,评论内容IP属地,评论级别,评论内容)
结果3:根据帖子采集评论

1.4 软件说明

几点说明,请详读:

1. Windows系统、Mac系统均可直接运行,无需配置编程环境
2. 软件含三个核心功能:搜索帖子、主页帖子、评论的采集,并支持不同条件的筛选
3. 软件通过接口协议采集,并非通过模拟浏览器等RPA类,稳定性较高
4. 软件运行完成后,会在当前文件夹(即,软件所在文件夹)生成csv结果文件
5. 采集过程中,每采集一页,存一次csv。并非采完最后一次性保存!防止因异常中断导致丢失前面的数据(每页请求间隔1~2s)
6. 采集过程中,有log文件详细记录运行过程,方便回溯

二、主要技术

2.1 模块分工

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

tkinter:GUI软件界面
requests:发送请求
json:解析返回的响应数据
pandas:保存csv数据结果
logging:运行过程中日志记录

出于版权考虑,暂不公开源码,仅向用户提供软件使用。

2.2 部分代码

部分代码实现:

发送请求并解析数据:

# 发送请求
r = requests.get(url, headers=h1, params=params)
# 解析数据
json_data = r.json()

解析响应数据,以“评论内容”字段为例:

for data in json_data['data']:
    # 评论内容
    text = data['text_raw']
    text_list.append(text)

保存结果数据到csv文件:

# 保存数据
df = pd.DataFrame(
    {
        '微博链接': weibo_url,
        '微博id': weibo_id,
        '页码': page,
        '评论者昵称': screen_name_list,
        '评论者粉丝数': followers_count_list,
        '评论者关注数': friends_count_list,
        '评论者主页链接': user_home_url_list,
        '评论者性别': gender_list,
        '评论者签名': desc_list,
        '评论时间': create_time_list,
        '点赞数': like_counts_list,
        '评论内容IP属地': source_list,
        '评论级别': comment_level_list,
        '评论内容': text_list,
    }
)
# 保存csv文件
df.to_csv(self.result_file, mode='a+', index=False, header=header, encoding='utf_8_sig')
self.tk_show('结果保存成功:{}'.format(self.result_file))

底部版权声明:

# 版权信息
copyright = tk.Label(root, text='@马哥python说 All rights reserved.', font=('仿宋', 10), fg='grey')
copyright.place(x=290, y=625)

日志记录模块:

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')

三、功能与使用

3.1 填写cookie

cookie是用户身份的关键凭证。首次使用软件前,需要配置cookie。最新版本软件里已经内附一键自动化配置cookie的ck小工具,小白友好,高效便捷:
cookie获取方法

然后把复制的cookie值填写到当前文件夹的cookie.txt文件中。

3.2 软件登录

用户登录界面:需要登录。

3.3 启动采集

1)登录成功之后,选择需要的功能模块(搜索帖子/博主帖子/评论);

2)设置相关参数(如关键词、时间范围、博主链接等);

3)点击「开始执行」,等待采集完成(可实时查看采集进度);

4)采集完成后,在默认的当前文件夹中查看csv数据文件或图片等。

3.4 演示视频

软件使用的完整过程演示:请见原文。

END、原创声明

本工具为作者 @马哥python说 原创开发,仅限于学术交流使用,严格遵循相关法律法规,符合平台内容合法合规性,禁止用于任何商业用途。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容