一键备份微博并导出生成PDF,顺便用Python分析微博账号数据

December 17, 2023
测试
测试
测试
测试
5 分钟阅读

这里再分享下如何快速导出你的所有微博数据,然后用Python分析某个微博账号的数据,比如高赞,转发,评论微博,微博词云,微博发布时间轴,以及使用的手机。

稳部落

这是一个专业备份导出微博记录工具 https://www.yaozeyuan.online/stablog/ ,备份原理是登录https://m.weibo.cn/ 后, 模拟浏览器访问, 获取登录用户发布的所有微博并备份,即使炸号的微博, 只要能登录 https://m.weibo.cn/ 后还能看见自己的微博就可以备份。

这个工具使用说明见 https://github.com/YaoZeyuan/stablog ,支持Windows和Mac版。

打开软件后登录自己的微博,这里也可以刷微博。

打开系统设置可以看到总共微博条数2695,有269页,抓取时间要2个多小时。

设置下排序规则,是否需要图片,PDF清晰度还有时间范围。

支持增量备份, 备份过一次后, 可以只备份前10页内容, 加快备份速度

可在【管理数据】标签页中浏览已备份的微博记录列表

支持断点续传, 中途停止后, 可以记下备份的页码, 再次运行时修改【备份范围】配置项, 从该页之后再备份即可

32位操作系统下, 当pdf体积超过2GB后, 会提示文件已损坏. => 解决方案是更换64位操作系统, 或调整【时间范围】/【自动分卷】配置项, 通过限定单本pdf容量, 手工将pdf体积控制在2GB之内

利用【开发者模式】配置项, 可以极大加快微博备份速度。

点击开始备份,可以看到运行日志。

2020-05-26 19:56:44.780: [FetchCustomer] 本次抓取的页码范围为:0~10 
2020-05-26 19:56:44.824: [FetchCustomer] 准备抓取第1/271页微博记录 
2020-05-26 19:56:45.275: [FetchCustomer] 第1/271页微博记录抓取成功, 准备存入数据库 
2020-05-26 19:56:45.967: [FetchCustomer] 第1/271页微博记录成功存入数据库 
2020-05-26 19:56:45.968: [FetchCustomer] 已抓取1/271页记录, 休眠20s, 避免被封 
2020-05-26 19:57:05.970: [FetchCustomer] 准备抓取第2/271页微博记录 
2020-05-26 19:57:06.310: [FetchCustomer] 第2/271页微博记录抓取成功, 准备存入数据库 
2020-05-26 19:57:07.039: [FetchCustomer] 第2/271页微博记录成功存入数据库 
2020-05-26 19:57:07.040: [FetchCustomer] 已抓取2/271页记录, 休眠20s, 避免被封 
2020-05-26 19:57:27.041: [FetchCustomer] 准备抓取第3/271页微博记录

开始下载图片。

执行完毕,在本地生成了你的微博电子书。

生成目录下有源文件和PDF。

打开里面的HTML文件,备份的微博按照月份分类。

看看2019年4月7号的这条微博,图片都下载到本地了。

生成的PDF文件近30MB,不算太大。

这个工具只能备份自己的微博数据,如果想备份其他人的,可以使用下面的Python脚本,它还能分析某个微博账号的数据。

Python 备份和分析微博

这是个开源项目https://github.com/nlpjoe/weiboSpider ,使用方法很简单,先登录微博复制你的cookie,然后修改配置文件,之后执行脚本就可以了,看我的操作流程。

打开 https://m.weibo.cn/ 登录你的微博账号获取headers的 cookie ,就是箭头里那一长串字符。

下载代码到本地,由于是国外网站下载会比较慢,可以在公众号内回复 微博 获取。

之后修改配置文件config.json ,这里说明下,user_id_list填你要分析的微博账号uid,可以填多个,我这里填的是非常喜欢的歌手李健。filter为1表示分析原创微博,如果分析所有微博填0即可。since_date为从哪天的微博开始分析,然后就是把上面复制的cookie填到对应位置。

{
	"user_id_list": ["1744395855"],
    "filter": 1,
    "since_date": "2015-01-01",
    "write_mode": ["csv", "txt"],
    "pic_download": 1,
    "video_download": 1,
    "cookie": "xxx",
    "mysql_config": {
        "host": "localhost",
        "port": 3306,
        "user": "root",
        "password": "123456",
        "charset": "utf8mb4"
    }
}

接着执行pip install -r requirements.txt安装以下依赖包。

requests==2.22.0
jieba==0.42.1
wordcloud==1.6.0
scipy==1.2.1
seaborn==0.10.0
pandas
lxml
tqdm

当然你也可以单独安装 pip --trusted-host pypi.doubanio.com install -U tqdm -i http://pypi.doubanio.com/simple

scipy要安装指定版本 pip --trusted-host pypi.doubanio.com install scipy==1.2.1 -i http://pypi.doubanio.com/simple

上面都配置好了,就开始执行脚本 python weibospider.py ,我是在Windows下使用的Python3.7,可能跟作者环境不一样,遇到了些问题。

如果执行出现错误SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed ,改动文件 weibospider.py 里的requests请求参数。

html = requests.get(url, cookies=self.cookie,verify=False).content

需要注意如果提示cookie错误或已过期,再刷新下 m.weibo.cn复制cookie填到配置文件。

没问题的话可以看到脚本开始执行了。

抓取完毕,开始生成李健的微博词云图,他的微博关键词为音乐,北京,朋友,歌手,电影,居然还提到了周杰伦。

每个月转发评论点赞总数图,可以看到2016-2018年的微博数据是高峰期。

原创微博和转发微博数据比例。

李健发微博的工具主要为pc网页和iPad。

生成的目录下还有所有微博的图片,视频,txt文件和excel数据。

原创微博里转发最高的为2015年这条宣传电影《太平轮》主题曲 假如爱有天意 的微博https://www.weibo.com/1744395855/CruOoDGtB ,不过也才2万多,和某些动辄百万转发的流量明星的确不能比,毕竟人家水军多。

下图是李健微博转发最高的20条微博,平均不到1万的转发和评论,点赞倒是都有几万。

ps:如果你想分析某个微博账号,自己又不会使用Python,联系我,包教包会,当然直接给你数据也可以。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多