Skip to content

cbh2071/weibo_spider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微博数据采集系统

基于Selenium的智能微博数据采集系统,支持关键词搜索、时间范围筛选和评论深度抓取。

核心功能

数据采集

  • 关键词搜索(支持复杂搜索语法)
  • 时间范围精确筛选(支持自动分时段续爬)
  • 评论深度抓取(主评+子评三级关联)
  • 元数据完整保存(用户信息、互动数据、时间来源)

反爬策略

  • 动态请求间隔(0.8-2.5秒随机延迟)
  • Chrome指纹模拟
  • 自动恢复会话
  • 智能页面元素探测

数据管理

  • JSON格式标准化输出
  • 采集进度持久化
  • 时间范围自动迭代
  • 无效结果自动过滤

增强特性

分页限制智能处理

  • 微博搜索结果最多显示50页,系统自动检测页数
  • 当结果超过50页时,自动记录末尾时间点
  • 基于时间点智能分段,确保完整采集长时间范围数据
  • 空结果页面自动跳过,提高采集效率

评论深度采集

  • 支持评论全量获取,突破默认显示限制
  • 点击"查看更多评论"自动跳转至详情页
  • 动态滚动加载所有子评论内容
  • 评论数据结构化保存(用户、内容、时间、点赞数)
  • 支持处理点赞数为0的特殊显示情况

断点续爬与异常恢复

  • 自动保存采集进度,支持意外中断后恢复
  • 智能处理页面加载超时和元素定位失败
  • CSS选择器和XPath双重定位策略,提高页面解析稳定性
  • 详细的错误日志和HTML结构记录,便于调试和修复

项目结构

  • core/: 核心爬虫实现
    • weibo_spider.py: 微博爬虫主类
    • base_spider.py: 爬虫基类
  • utils/: 工具函数
    • progress.py: 进度管理
    • filters.py: 数据过滤器
  • tests/: 测试脚本
    • get_replies.py: 评论获取测试
  • data/: 数据存储目录
  • configs/: 配置文件

使用说明

环境要求

  • Python 3.8+
  • Chrome 浏览器 100+
  • ChromeDriver(需与Chrome版本匹配)

安装步骤

# 安装依赖
pip install -r requirements.txt

配置参数

config/user_config.json中配置爬取参数:

{
    "keywords": ["春晚", "春节联欢晚会"],
    "start_date": "2019-02-04-20",
    "end_date": "2019-02-05-20",
    "user_data_dir": "./chrome_profile",
    "headless": false,
    "request_interval": [0.1, 0.5],
    "page_load_timeout": 30
} 

运行程序

# 基础运行模式
python main.py

参数说明

参数名 类型 必填 说明
keywords list 搜索关键词列表
start_date string 开始时间(格式:YYYY-MM-DD-HH)
end_date string 结束时间(格式:YYYY-MM-DD-HH)
headless bool 是否使用无头模式(默认true)
user_data_dir string 浏览器用户数据目录(用于保持登录状态)

注意事项

  1. 首次使用建议在非无头模式下运行,完成微博登录验证
  2. 输出文件保存在根目录,按关键词和时间范围自动命名
  3. 采集进度自动保存在data/progress/目录下

常见问题

  1. ChromeDriver报错

    • 确认安装的ChromeDriver版本与Chrome浏览器完全匹配
    • 将ChromeDriver添加到系统PATH环境变量
  2. 登录验证问题

    • 首次运行在非无头模式下手动登录微博账号
    • 登录信息会保存在user_data目录
  3. 页面结构变化

    • 如果出现元素定位失败,请检查core/weibo_spider.py中的XPath选择器
    • 可提交issue并提供error_log.html文件内容

已知问题

  • 完整子评论获取在某些情况下不稳定,可以考虑加大wait时间
  • 微博页面结构变化时可能需要更新选择器

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages