一款专门用于爬取微博用户公开原创内容的爬虫工具,完全无需登录,功能强大稳定。
✅ 完全无需登录:直接爬取公开可见内容,无需扫码/账号
✅ 长微博全文抓取:自动识别并展开"全文"按钮,获取完整内容
✅ 完美断点续爬:任何中断(手动停止/崩溃/关机)后可继续,100%不重复爬取
✅ 后台静默运行:默认无头模式,浏览器无窗口,不占用桌面资源
✅ 多用户支持:支持命令行指定任意用户ID爬取
✅ 自动目录管理:按"用户名_用户ID+时间戳"生成独立目录,永不覆盖历史数据,直观识别用户
✅ 批量存储:每N条存一个文件,避免单文件过大,默认每1000条一批
✅ 智能过滤:自动过滤转发内容、空内容、重复内容,仅保留原创微博
✅ 双日志输出:实时进度同时输出到控制台和文件,后台运行也能随时查看历史进度
✅ 智能自动退出:连续多次无新增内容或滚动到底部自动停止,无需人工值守
✅ 重复内容验证:支持打印重复ID示例,确认爬取准确性
- Python 3.8+
- 依赖安装:
pip install playwright playwright install chromium
python crawl_final_pro.py默认爬取用户ID为 2704548745 的公开微博,浏览器后台静默运行。
python crawl_final_pro.py --uid 123456替换123456为你要爬取的微博用户ID,例如爬雷军:
python crawl_final_pro.py --uid 2014433131用户ID获取方式:打开微博用户主页,URL中/u/后面的数字就是用户ID
python crawl_final_pro.py --uid 123456 --headless 0浏览器窗口可见,用于调试、查看爬取过程。
python crawl_final_pro.py --resume ./data/weibos_雷军_2014433131_20260420_163045指定上次运行的输出目录,自动加载历史进度,跳过已爬取内容,继续爬取。
# 每500条存一个批次,连续3次无新增自动停止,每爬20条输出一次进度
python crawl_final_pro.py --uid 123456 --batch_size 500 --max_empty_scroll 3 --log_interval 20
# 开启重复ID示例打印,验证爬取准确性
python crawl_final_pro.py --uid 123456 --show_duplicate_samples| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--uid |
字符串 | 2704548745 |
要爬取的微博用户ID |
--resume |
字符串 | 空 | 断点续爬:指定上次运行的输出目录路径 |
--headless |
整数 | 1 |
是否后台运行:1=后台无头,0=前台可见 |
--batch_size |
整数 | 1000 |
每批存储条数,默认1000条存一个文件 |
--max_empty_scroll |
整数 | 5 |
连续多少次滚动无新增内容自动停止,默认5次 |
--log_interval |
整数 | 10 |
每爬N条输出一次进度日志,默认10条 |
--show_duplicate_samples |
布尔开关 | 关闭 | 是否打印重复ID示例,用于验证爬取正确性 |
每个爬取任务会生成独立目录,新版格式为 data/weibos_{用户名}_{用户ID}_{时间戳},自动清理用户名中的特殊字符,直观易识别:
weibos_雷军_2014433131_20260420_163045/
├── user_info.json # 爬取用户的基本信息(昵称、简介等)
├── weibos_all.json # 所有爬取到的原创微博完整汇总
├── weibos_batch_001.json # 批次存储文件,每1000条一个
├── weibos_batch_002.json
├── ...
├── crawled_ids.txt # 已爬取的微博ID记录,用于断点续爬
├── crawl.log # 完整运行日志,包含所有操作和错误信息
└── crawl_complete.json # 爬取完成标记(仅全部完成后生成)
旧版格式
weibos_{用户ID}_{时间戳}也兼容断点续爬
{
"id": "微博ID",
"content": "微博完整内容",
"publish_time": "发布时间",
"crawl_time": "爬取时间",
"url": "微博详情页链接",
"is_full_text": "是否是全文抓取(true=有全文按钮,已展开)"
}提取爬取结果中的纯文本内容,每条微博一行,可直接用于数据分析:
# 默认处理最新爬取结果
python extract_content.py
# 自定义输入输出路径
python extract_content.py --input ./data/weibos_xxx/weibos_all.json --output ./output.txtdebug_missing.py:对比当前页面卡片和爬取结果,排查是否有遗漏内容debug_scroll.py:调试滚动加载问题,验证是否有新内容debug_why_few.py:分析爬取数量少的原因
A:未登录状态下微博平台限制只能查看用户最近的部分公开内容,这是平台本身的反爬限制,属于正常现象。如果需要爬取全部内容,可以登录后使用登录版爬虫。
A:微博移动端滚动加载特性,每次滚动会返回大量已经展示过的旧内容,仅末尾少量新内容,属于平台正常设计,不是爬虫bug。
A:运行时加上 --resume 参数指定上次的输出目录即可,会自动跳过已爬取的内容,接着之前的进度继续。
A:多次运行命令,每次指定不同的 --uid 参数即可,每个用户会生成独立的目录,互不影响。
A:直接打开输出目录下的 crawl.log 文件,里面有完整的实时进度记录,也可以查看 weibos_all.json 文件看已爬取的内容。
A:未登录状态下部分长微博即使点击全文也无法查看完整内容,属于平台限制。
- 本工具仅用于学习交流和个人使用,请勿用于商业用途
- 爬取时请遵守网站的
robots.txt协议和相关法律法规 - 请勿短时间内频繁爬取,避免给对方服务器造成压力,也避免被封IP
- 爬取的内容版权归原作者所有,请勿随意传播