腾讯微博备份工具
这是一个基于Python3的腾讯微博爬虫,将数据保存在SQLite中
新版本中新增了从数据库导出到HTML实现可视化查看
此项目思路源于项目 tencent-weibo-exporter ,感谢原作者,欢迎issues
爬虫部分为大一初学所写,非常弱鸡,dalao轻喷
腾讯微博服务器现在极不稳定,爬虫难以测试重构,应该不会再维护了
腾讯微博已经关闭私信相关所有功能,包括查看旧私信和发送私信
环境
爬虫部分
依赖selenium对网页进行动态爬取,webdriver使用Firefox,请自行配置geckodriver相关
登陆采用QQ快速登陆,所以请保持QQ在登录状态,不支持传cookies
HTML导出部分
在SQL->HTML中,使用bs4对HTML进行格式化
数据库结构说明
EMOJI表:存储EMOJI名字(如果有)和链接
VIDEO表:存储视频名,对应微博CID,原链接,封面
IMAGE表:存储MINE页(广播/评论)配图和AT页配图,CID是MINE的外键,rank表示顺序,转评插入的图片仅有链接(因为可以从正文img标签过来查找
INFO表:暂时仅用来存储上次的进度
MINE表:存储MINE页原文信息和位置信息,emoji在原文中用<emoji=url>标签标识链接,转评文字中的配图用<img=url>标识链接
type列含义:1 原创;2 转播;3 评论;12 赞
AT表:存储AT页原文信息和位置信息
FAVOR表:同MINE,用于存储favor页(收藏)内容
FIMAGE表:同IMAGE,用于存储favor页(收藏)配图
PMT表:主要用于记录有私信往来的人的ID
使用说明
爬虫部分(tencent_weibo_backup系列)
at,favor,mine,pm分别对应 提及,收藏,广播评论,私信
爬取完毕之后会在工作目录下生成 用户id.db,内含所有数据
支持断点续传,支持断点续传,支持断点续传
图片下载(tencent_weibo_download_pic.py)
自动下载所有图片,分类存放在工作目录下的images文件夹中
数据库导出HTML(build系列)
build_mine用于导出提及,收藏,广播评论,使用时可以选择,导出后全部存放在工作目录HTML文件夹下,文件以类型和时间命名
CSS仿写腾讯微博网页版
编辑脚本中的CUT可以控制分页条数
build_pm用于导出私信,导出后在工作目录下生成pm_index.html索引和PM文件夹,索引链接到PM下与某位用户交流的HTML
私信已经死了,只能自己随手弄个简单的CSS凑活看吧
更新日志
v6
新增SQLite->HTML导出,除PM以外,build_mine仿写了腾讯微博网页版CSS样式
爬虫无实质性更新,配合HTML导出对图片下载的文件夹结构进行了优化
v5
新增私信抓取功能,但是对于量比较大的,自动加载更多有一定等待时间,千万不要手动去点加载更多,否则会搞乱程序的判断导致翻不到底,其次也做了人工判断是否翻到了末尾,给手动翻页的机会
私信比较简单,表情图片文字,没了,应该不会有漏的东西吧…………
v4
新增抓取提及的功能,与抓取其他相互独立互不影响,可以单独抓取(提及实在太多了,小心火葬场
(由于提及与MINE应该有大量图片重复,所以共用IMAGE表和mine_image文件夹
彻底解决了弹出登陆窗口的问题
用新算法处理,速度提高二十倍,速度极快,所以现在的话对图片库进行增量更新不再痛苦了
(建议运行两次download_pic,以免有图片因为网络问题导致没下载成功
新增图片投票功能(很抱歉,之前没有考虑到这个问题,可以直接增量备份,但是约等于重来了…………
v3.5
新增抓取收藏的功能,与抓取广播相互独立互不影响
v3
增加图片下载功能,会区分类型分为不同文件夹
(视频图片404不必担心,很多确实已经凉了,包括腾讯微博来源的久远的url.cn短链接也被清理了不能转跳
添加日志功能
v2.1
本人实测速度大概160页/小时,V2版本只有两条原文中有错误取了纯文本,速度凑合,但是非常稳定,可以一次跑完没有错误中断了
基本不会动了,下版主要增加图片下载
增加了一些能力处理引号的能力(目前仅能处理单一种类的引号,实际上也基本够用了)
由于以上,插入失败的url会自动打印并导出供手工处理(起码让你知道那些没有成功插入)
修复了一百页无法跳转的问题(重要)
修复了页面有时没有正常跳转到下一页导致计数错误的问题
修复对用户名内emoji的报错(其实就是直接不管了取纯文本(