写了个爬虫,爬了本站的所有帖子、评论和用户信息,简单分析了一下数据。公开数据库,开源

2023-07-06 09:55:37 +08:00
 oldshensheep

学习 scrapy 写的一个小爬虫

数据都放在了 sqlite 数据库,方便分,整个数据库大小 2.1GB 。

爬虫源码放在了 GitHub ,在 GitHub 我 release 了完整的 sqlite 数据库文件

Github 链接:https://github.com/oldshensheep/v2ex_scrapy

不建议自行运行爬虫,数据已经有了

爬取花了几十小时,因为爬快了会封禁 IP ,并且我也没使用代理池。并发数设置为 3 基本上可以一直爬。

爬取相关数据说明

爬虫从topic_id = 1开始爬,路径为https://yangjunhui.monster/t/{topic_id}。 服务器可能返回 404/403/302/200 ,如果是 404 说明帖子被删除了,如果是 403 说明是爬虫被限制了,302 一般是跳转到登陆页面,有的也是跳转到主页,200 返回正常页面。

爬虫没有登陆,所以爬取的数据不完全,比如水下火热的帖子就没有爬到,还有就是如果是 302 的帖子会记录帖子 id ,404/403 不会记录。

爬取过程中会帖子内容,评论,以及评论的用户信息。

注 1:爬了一半才发现 V 站帖子附言没有爬,附言从topic_id = 448936才会爬取

注 2:select count(*) from member 得到的用户数比较小,大概 20W ,是因为爬取过程中是根据评论,以及发帖信息爬取用户的,如果一个用户注册之后既没有评论也没有发帖,那么这个账号就爬不到。还有就是因为部分帖子访问不了,也可能导致部分账号没有爬。还有部分用户号被删除,这一部分也没有爬。(代码改了,可以爬,但是都已经爬完了……)

注 3:时间均为 UTC+0 的秒数

注 4:数据库除了主键,和唯一索引,没有加其他索引。

统计分析

帖子、评论和用户数量统计

帖子总数:801,038 ( 80 万)
评论总数:10,899,382 ( 1000 万)
用户总数:194,534 ( 20 万)异常原因见爬取相关数据说明的注 2

获得感谢最多的评论

因为部分评论内容较多不方便展示,要查看内容可以点击链接。或者下载数据库使用 SQL 查询,SQL 查询文件也包含在开源文件中

评论链接 感谢数
https://yangjunhui.monster/t/820687#r_11150263 316
https://yangjunhui.monster/t/437760#r_5432223 297
https://yangjunhui.monster/t/915584#r_12684442 248
https://yangjunhui.monster/t/917858#r_12720322 246
https://yangjunhui.monster/t/949195#r_13227124 246
https://yangjunhui.monster/t/881410#r_12126164 245
https://yangjunhui.monster/t/884719#r_12178891 240
https://yangjunhui.monster/t/901263#r_12442916 240
https://yangjunhui.monster/t/749163#r_10129442 217
https://yangjunhui.monster/t/877829#r_12070911 216

正向投票最多的帖子

帖子链接 标题 票数
https://yangjunhui.monster/t/110327 UP n DOWN vote in V2EX 321
https://yangjunhui.monster/t/295433 Snipaste - 开发了三年的截图工具,但不只是截图 274
https://yangjunhui.monster/t/462641 在 D 版发过了,不过因为不少朋友看不到 D 版,我就放在这里吧,说说我最近做的这个 Project 200
https://yangjunhui.monster/t/658387 剽窃别人成果的人一直有,不过今天遇到了格外厉害的 179
https://yangjunhui.monster/t/745030 QQ 正在尝试读取你的浏览记录 177
https://yangjunhui.monster/t/689296 早上还在睡觉,自如管家进了我卧室... 145
https://yangjunhui.monster/t/814025 分享一张我精心修改调整的 M42 猎户座大星云(Orion Nebula)壁纸。用了非常多年,首次分享出来,能和 MBP 2021 新屏幕和谐相处。 136
https://yangjunhui.monster/t/511827 23 岁,得了癌症,人生无望 129
https://yangjunhui.monster/t/427796 隔壁组的小兵集体情愿 要炒了 team leader 123
https://yangjunhui.monster/t/534800 使用 Github 账号登录 黑客派 之后,Github 自动 follow 112

点击次数最多的帖子

帖子链接 标题 点击数
https://yangjunhui.monster/t/510849 chrome 签到插件 [魂签] 更新啦 39,452,510
https://yangjunhui.monster/t/706595 迫于搬家 ··· 继续出 700 本书~ 四折 非技术书还剩 270 多本· 2,406,584
https://yangjunhui.monster/t/718092 使用 GitHub 的流量数据为仓库创建访问数和克隆数的徽章 1,928,267
https://yangjunhui.monster/t/861832 帮朋友推销下福建古田水蜜桃,欢迎各位购买啊 635,832
https://yangjunhui.monster/t/176916 王垠这是在想不开吗 329,617
https://yangjunhui.monster/t/303889 关于 V2EX 提供的 Android Captive Portal Server 地址的更新 295,681
https://yangjunhui.monster/t/206766 如何找到一些有趣的 telegram 群组? 294,553
https://yangjunhui.monster/t/265474 ngrok 客户端和服务端如何不验证证书 271,244
https://yangjunhui.monster/t/308080 Element UI——一套基于 Vue 2.0 的桌面端组件库 221,099
https://yangjunhui.monster/t/295433 Snipaste - 开发了三年的截图工具,但不只是截图 210,675

发送评论最多的用户

用户 评论数
Livid 19559
loading 19190
murmur 17189
msg7086 16768
Tink 15919
imn1 11468
20015jjw 10293
x86 9704
opengps 9694
est 9532

发送帖子最多的用户

用户 主题数
Livid 6974
icedx 722
ccming 646
2232588429 614
razios 611
coolair 604
Kai 599
est 571
Newyorkcity 553
WildCat 544

曲线

需要详细的数据,建议下载数据库

每月新用户数折线图

每月新帖子数折线图

评论数折线图

使用次数最多的节点

节点 次数
qna 188011
all4all 103254
programmer 51706
jobs 49959
share 35942
apple 20713
macos 19040
create 18685
python 14124
career 13170

使用次数最多的 tag ( tag 为 V2EX 自动生成)

tag 次数
开发 16414
App 13240
Python 13016
Mac 12931
Java 10984
Pro 9375
iOS 9216
微信 8922
V2EX 8426
域名 8424

Github 链接:https://github.com/oldshensheep/v2ex_scrapy

16548 次点击
所在节点    分享创造
120 条回复
bshu
2023-07-06 10:41:33 +08:00
@oldshensheep
@FanError
最怕的就是冠以统计之名,然后给出一些事实而非的结果。如果原始数据不完整,统计方法不严谨,得出的结论基本就是造谣。否则也不会这么多人反感那些所谓的平均工资,就业率,物价上涨指数等结果了。
glfpes
2023-07-06 10:47:06 +08:00
@bshu 你说的对,不过这个统计没啥严肃性,不必太较真。。。而且原始数据也 release 出来了
murmur
2023-07-06 10:49:39 +08:00
我上榜了?
luosilent
2023-07-06 10:56:42 +08:00
@bshu #21 这种爬论坛只是图一乐摸鱼水贴而已,又没啥含义。本帖和你举例的例子不是一个层次上的话题。理解你的反感,但在这里不必用太严谨的眼光来挑剔吧
bjzhush
2023-07-06 10:56:57 +08:00
不错啊,辛苦了~~
wweerrgtc
2023-07-06 11:04:48 +08:00
@guog #20 可能进了水深火热
lasuar
2023-07-06 11:09:26 +08:00
可以的,没想到我用了几年的 snipaste 居然是一个大学生做出来的
x86
2023-07-06 11:12:51 +08:00
@wweerrgtc #26 Livid 的回帖数显示 26847 ,不至于 7000+的回帖在里边吧
oldshensheep
2023-07-06 11:15:53 +08:00
@guog 我又用爬虫爬 https://yangjunhui.monster/member/x86/replies 这个页面的评论,发现总共只有 10227 条评论,说明 v 站的那个评论数是包含了隐藏的评论的。可能是帖子、评论删除了,帖子在水深火热等等。
wweerrgtc
2023-07-06 11:16:54 +08:00
@x86 #28 有可能的吧 他经常说"谢谢, 已经处理了", 然后将帖子移入水深火热
lasuar
2023-07-06 11:23:54 +08:00
@chotow 啊哈哈,那个接盘缩写字段表的帖子嘛,我当时有看到,但没留名。。。
christin
2023-07-06 11:28:36 +08:00
@bshu #21 你在急什么呢?恨国党不至于看到「统计」两个字就高潮了吧。
我倒想知道这个统计数据和你所谓的平均工资、就业率、物价上涨指数有什么关系呢?
sillydaddy
2023-07-06 11:30:23 +08:00
天哪,几十个小时就爬完了。我之前也爬了一份,花了将近 3 个月,还是心太软了。

OP 这个统计不错,我觉得数据还有继续挖掘的空间,有没有想法?举个简单的例子,可以找到 member 与 member 的「偶遇」关系,谁谁谁曾经和我「相遇在」(一起评论了)某个帖子。

类似 v 友 @vitovan 做的这个可视化: https://yangjunhui.monster/t/940876
glfpes
2023-07-06 11:41:44 +08:00
load 了一下 sqlite 的数据,看过去的自己在说话,有一种看 QQ 空间的羞耻感。
fxxkgw
2023-07-06 11:42:26 +08:00
@lovedebug
我记得备案是过了的上海户口 是 L 自己选择搬回墙外的
oldshensheep
2023-07-06 11:49:52 +08:00
@sillydaddy 大概快接近 100 小时吧,可能 80-90 。
是个不错的想法。感觉也可以做个聚类啥的,相同的用户一般经常评论同一个帖子。


感觉水深火热没有爬挺可惜的……登陆爬不知道会不会封我号……
pengtdyd
2023-07-06 12:15:51 +08:00
欢迎来到 python 爬虫的世界!
ClarkAbe
2023-07-06 12:43:52 +08:00
有意思...后续可以搞个 go 版的持续爬虫🤣
sillydaddy
2023-07-06 12:50:55 +08:00
@oldshensheep
对,就是可视化,做好了的话,就相当于给 v 站添加了一个新的入口了。毕竟 v 站过往那么多好帖子,没人看就珠玉蒙尘了。

我爬过水深火热,爬慢点应该不会封。
israinbow
2023-07-06 12:57:12 +08:00
https://yangjunhui.monster/t/949195#r_13227124 的回复可能也是整个 i2ex 获赞速度最快的, 20 天 240+ 赞.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/954480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX