V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
oldshensheep
V2EX  ›  分享创造

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

  oldshensheep ·
oldshensheep · 296 天前 · 14424 次点击
这是一个创建于 296 天前的主题,其中的信息可能已经有所发展或是发生改变。

学习 scrapy 写的一个小爬虫

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

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

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

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

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

爬取相关数据说明

爬虫从topic_id = 1开始爬,路径为https://www.v2ex.com/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://www.v2ex.com/t/820687#r_11150263 316
https://www.v2ex.com/t/437760#r_5432223 297
https://www.v2ex.com/t/915584#r_12684442 248
https://www.v2ex.com/t/917858#r_12720322 246
https://www.v2ex.com/t/949195#r_13227124 246
https://www.v2ex.com/t/881410#r_12126164 245
https://www.v2ex.com/t/884719#r_12178891 240
https://www.v2ex.com/t/901263#r_12442916 240
https://www.v2ex.com/t/749163#r_10129442 217
https://www.v2ex.com/t/877829#r_12070911 216

正向投票最多的帖子

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

点击次数最多的帖子

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

曲线

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

每月新用户数折线图

1688470374959

每月新帖子数折线图

1688469358680

评论数折线图

1688470738877

使用次数最多的节点

节点 次数
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

第 1 条附言  ·  296 天前
修正一下每月新评论数折线图,应该是下面这个
https://github.com/oldshensheep/v2ex_scrapy/blob/main/image/t/1688470738877.png?raw=true
其实差别不大,看花了。

还有那个评论链接,你点了可能不会自动跳转到评论那一行,那是因为评论不在第一页,这个我也懒得改了……
120 条回复    2023-07-17 17:35:40 +08:00
1  2  
JieS
    1
JieS  
   296 天前
有点意思
iamsk
    2
iamsk  
   296 天前
有趣,认识一下
frankies
    3
frankies  
   296 天前
用户增量乏力?
月发帖数和月评论数高度相关倒是很好理解。
oldshensheep
    4
oldshensheep  
OP
   296 天前
需要注意一下,因为爬虫是用公开的信息爬取的,如果一个用户没有评论也没有发帖,那么他就不会被爬到。所以这里统计的总用户数只有 20 万
jayzau1973
    5
jayzau1973  
   296 天前
#获得感谢最多的评论

才发现这些帖子全都看过😂😂
wweerrgtc
    6
wweerrgtc  
   296 天前
又可以摸一天的鱼
oldshensheep
    7
oldshensheep  
OP
   296 天前
修正一下每月新评论数折线图,应该是下面这个
https://github.com/oldshensheep/v2ex_scrapy/blob/main/image/t/1688470738877.png?raw=true
其实差别不大,看花了
bshu
    8
bshu  
   296 天前
我觉得出结果之前需要先好好评估你的结果的准确性并给出合理解释,否则明知不准确,还硬要出总结性结果,和那些断章取义造谣生事的没啥区别
knowckx
    9
knowckx  
   296 天前   ❤️ 3
站主:你们又来爬我的站点
oldshensheep
    10
oldshensheep  
OP
   296 天前   ❤️ 9
@bshu 这个是统计数据,没有总结任何结果,不需要任何解释。准确性的问题,在开头的 爬取相关数据说明 我已经提到了。
inhzus
    11
inhzus  
   296 天前
“发送评论最多的用户” 这几个 ID 是真的熟悉,但也没想到居然发了这么多...
FanError
    12
FanError  
   296 天前
@bshu 太严格了吧,感觉挺好,至少像楼主统计的这些数据,有一定误差,对我来说没任何影响,也不在意他的准确率一定要达到多少。
x86
    13
x86  
   296 天前   ❤️ 8
不知不觉我水了 10 年多了
回复总数 12522
SleepyRaven
    14
SleepyRaven  
   296 天前   ❤️ 7
[发送评论最多的用户] ❌
[摸鱼强度最高的用户] ✅
Ne
    15
Ne  
   296 天前 via Android
有意思,水了这么多年了
paopjian
    16
paopjian  
   296 天前
大部分帖子都是好多年前的了,如果要做统计的话 OP 能按每年每月 TOP 再做几个吗?
chotow
    17
chotow  
   296 天前
「获得感谢最多的评论」,那个排名第一的评论,看过一次就再也忘记不了!
silypie
    18
silypie  
   296 天前   ❤️ 4
这就体现了帖子主键自增的坏处了🤣
lovedebug
    19
lovedebug  
   296 天前
新用户暴跌是因为被墙了,备案没过
guog
    20
guog  
   296 天前 via Android
@x86 统计里只有九千七,少的去哪了
bshu
    21
bshu  
   296 天前
@oldshensheep
@FanError
最怕的就是冠以统计之名,然后给出一些事实而非的结果。如果原始数据不完整,统计方法不严谨,得出的结论基本就是造谣。否则也不会这么多人反感那些所谓的平均工资,就业率,物价上涨指数等结果了。
glfpes
    22
glfpes  
   296 天前
@bshu 你说的对,不过这个统计没啥严肃性,不必太较真。。。而且原始数据也 release 出来了
murmur
    23
murmur  
   296 天前
我上榜了?
luosilent
    24
luosilent  
   296 天前
@bshu #21 这种爬论坛只是图一乐摸鱼水贴而已,又没啥含义。本帖和你举例的例子不是一个层次上的话题。理解你的反感,但在这里不必用太严谨的眼光来挑剔吧
bjzhush
    25
bjzhush  
   296 天前
不错啊,辛苦了~~
wweerrgtc
    26
wweerrgtc  
   296 天前
@guog #20 可能进了水深火热
lasuar
    27
lasuar  
   296 天前
可以的,没想到我用了几年的 snipaste 居然是一个大学生做出来的
x86
    28
x86  
   296 天前
@wweerrgtc #26 Livid 的回帖数显示 26847 ,不至于 7000+的回帖在里边吧
oldshensheep
    29
oldshensheep  
OP
   296 天前
@guog 我又用爬虫爬 https://www.v2ex.com/member/x86/replies 这个页面的评论,发现总共只有 10227 条评论,说明 v 站的那个评论数是包含了隐藏的评论的。可能是帖子、评论删除了,帖子在水深火热等等。
wweerrgtc
    30
wweerrgtc  
   296 天前
@x86 #28 有可能的吧 他经常说"谢谢, 已经处理了", 然后将帖子移入水深火热
lasuar
    31
lasuar  
   296 天前   ❤️ 1
@chotow 啊哈哈,那个接盘缩写字段表的帖子嘛,我当时有看到,但没留名。。。
christin
    32
christin  
   296 天前   ❤️ 4
@bshu #21 你在急什么呢?恨国党不至于看到「统计」两个字就高潮了吧。
我倒想知道这个统计数据和你所谓的平均工资、就业率、物价上涨指数有什么关系呢?
sillydaddy
    33
sillydaddy  
   296 天前   ❤️ 2
天哪,几十个小时就爬完了。我之前也爬了一份,花了将近 3 个月,还是心太软了。

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

类似 v 友 @vitovan 做的这个可视化: https://www.v2ex.com/t/940876
glfpes
    34
glfpes  
   296 天前   ❤️ 2
load 了一下 sqlite 的数据,看过去的自己在说话,有一种看 QQ 空间的羞耻感。
fxxkgw
    35
fxxkgw  
   296 天前 via Android
@lovedebug
我记得备案是过了的上海户口 是 L 自己选择搬回墙外的
oldshensheep
    36
oldshensheep  
OP
   296 天前
@sillydaddy 大概快接近 100 小时吧,可能 80-90 。
是个不错的想法。感觉也可以做个聚类啥的,相同的用户一般经常评论同一个帖子。


感觉水深火热没有爬挺可惜的……登陆爬不知道会不会封我号……
pengtdyd
    37
pengtdyd  
   296 天前
欢迎来到 python 爬虫的世界!
ClarkAbe
    38
ClarkAbe  
   296 天前 via Android
有意思...后续可以搞个 go 版的持续爬虫🤣
sillydaddy
    39
sillydaddy  
   296 天前 via Android
@oldshensheep
对,就是可视化,做好了的话,就相当于给 v 站添加了一个新的入口了。毕竟 v 站过往那么多好帖子,没人看就珠玉蒙尘了。

我爬过水深火热,爬慢点应该不会封。
israinbow
    40
israinbow  
   296 天前
https://www.v2ex.com/t/949195#r_13227124 的回复可能也是整个 i2ex 获赞速度最快的, 20 天 240+ 赞.
Aitisikuoliv1d
    41
Aitisikuoliv1d  
   296 天前
建议大佬们专门爬一下水深火热的帖子,开放一个模块,供我们欣赏
lowett
    42
lowett  
   296 天前
他不是开放 api 的吗?不能直接调 api 分析啊?
duojiao
    43
duojiao  
   296 天前
棒啊
est
    44
est  
   296 天前   ❤️ 1
靠,何德何能居然上榜。。。
OrangeAdd
    45
OrangeAdd  
   295 天前
看乐了,看到好多神贴
darkengine
    46
darkengine  
   295 天前   ❤️ 3
那位叫 Livid 的用户摸鱼最严重 [手动狗头]
vigoss
    47
vigoss  
   295 天前
为啥不爬水深火热,那才是我们最需要的。真心脸
oneKnow
    48
oneKnow  
   295 天前
爬水深火热的话,200 个感谢估计排不进前一百,哈哈哈哈哈
shuxge1223
    49
shuxge1223  
   295 天前
抄了你的家,再把你家的东西公之于众 6
BugCry
    50
BugCry  
   295 天前 via Android
站长为啥没回复?因为在连夜升级反爬策略[手动狗头]
bshu
    51
bshu  
   295 天前
@christin 我不着急,只是随手找个例子阐明一下而已。本不想回复你这种挑事儿的言论,不知发生了多少起事件,因为你这种人恶意解读,最终闹得家破人亡。真心是个恶心的人!
bigtang
    52
bigtang  
   295 天前
2.1G 的数据库文件可否给我? 我做成即时搜索,比谷歌快多了:tanglib.com
tempw
    53
tempw  
   295 天前 via Android
站长不会有意见吗
Anjhon
    54
Anjhon  
   295 天前
做个用户情感分析可以🤔
christin
    55
christin  
   295 天前
@bshu #50 请你举出一个因为这种恶意解读导致家破人亡的例子来,别搁着虚空立靶。
bshu
    56
bshu  
   295 天前
@christin 闭嘴也是一种善良!武汉被撞小学生离世 7 天,妈妈遭网暴坠楼身亡
http://news.sohu.com/a/682096361_100044149
因为刚刚过去,所以印象比较深刻
还有就是之前保姆杀人案那个父亲,也是被各种解读,阴谋论一套套的
airqj
    57
airqj  
   295 天前
正好用来训练聊天机器人
感谢楼主🐶
fzls
    58
fzls  
   295 天前
把 [正向投票最多的帖子] 看了一遍,发现其中好多帖子都有印象哈哈
oldshensheep
    59
oldshensheep  
OP
   295 天前
@bshu @christin 你俩好,请不要继续争论这个了。不准确的统计数据是有可能带来危害,但是这种统计是不会有的。
这种东西离网暴也差很远,请不要继续这个话题。
fzls
    60
fzls  
   295 天前
@christin 直接拉黑就好了-。-图个乐子的贴跑来强行提升到造谣的层次,真的是很无语
googlefans
    61
googlefans  
   295 天前
没明白怎么用
clikes
    62
clikes  
   295 天前
我今天才知道帖子有个 up and down vote
christin
    63
christin  
   295 天前
@oldshensheep #58
ok ,继续争下去也没有意义,b 了拉倒。
LokiSharp
    64
LokiSharp  
   295 天前
@oldshensheep 其实 https://v2ex.com/help/api v 站有 api 可用的
afx
    65
afx  
   295 天前
富有科技竟然没上榜
can2421
    66
can2421  
   295 天前
Snipaste 居然是这里的大佬搞的, 牛逼
milkmlik
    67
milkmlik  
   295 天前
Livid 是谁为什么一直霸榜[狗头]
aitianci
    68
aitianci  
   295 天前
@murmur #23 你的 ID 也很眼熟啊😂
oldshensheep
    69
oldshensheep  
OP
   295 天前
@LokiSharp 这个 API 有速率限制,一小时 600 ,按那样要爬几千小时。
而且也不能获取别的用户信息,
nziming
    70
nziming  
   295 天前
可惜没有统计收藏
wangxiaoaer
    71
wangxiaoaer  
   295 天前 via iPhone
@murmur 好家伙,你又多了一条。
czfy
    72
czfy  
   295 天前
@oldshensheep 你猜 API 为什么要限制速率?
ohmyzsh
    73
ohmyzsh  
   295 天前
点击最多的帖子有点问题,一共才 7 条回复

https://www.v2ex.com/t/510849 chrome 签到插件 [魂签] 更新啦 39,452,510
liuqitoday
    74
liuqitoday  
   295 天前
有意思
smallWang
    75
smallWang  
   295 天前
@oneKnow #48 水深火热不是看不见吗 怎么爬?
hxzhouh1
    76
hxzhouh1  
   295 天前
@glfpes #34 哈哈,我也去看看
oldshensheep
    77
oldshensheep  
OP
   295 天前
@czfy 肯定不是防止爬虫😁🐶
gaifanking
    78
gaifanking  
   295 天前
哇哦 这个可以说的吗
XiaMuCoder
    79
XiaMuCoder  
   295 天前
艹,snipaste 的网站变成那种网站了,差点社死
Glauben
    80
Glauben  
   295 天前
看了一圈,感觉这个统计挺好的,发现了一些有意思的内容
zong400
    81
zong400  
   295 天前
Livid 我愿称你为最强水王
yeqizhang
    82
yeqizhang  
   295 天前 via Android
爬虫能把自己收藏的帖子全部下载成 html 保存吗,我想把我的收藏都下载下来,去我的收藏夹吃灰……
Danswerme
    83
Danswerme  
   295 天前
@x86
@murmur 你两我在哪个帖子都能看到
zzzzzzzzsafdasd
    84
zzzzzzzzsafdasd  
   295 天前
v 站正统在 go/flamewar ,没有水深火热没有灵魂
storyxc
    85
storyxc  
   295 天前
有趣 star 了
fzls
    86
fzls  
   295 天前
@XiaMuCoder 是不是被 dns 劫持了?我下午还打开了,挺正常的呀
zhw2590582
    87
zhw2590582  
   295 天前
有意思
xFrank
    88
xFrank  
   295 天前
大佬,来个按收藏排序的
Livid
    89
Livid  
MOD
   295 天前   ❤️ 3
关于新用户增长那里,最大的相关因素是把新用户注册的唯一途径改成了 Google 登录,而不是之前的填用户名、设置密码的注册方式。

而从楼主的另外一个图可以看到,新主题和评论数并没有因为这个改动而受到太大的影响。

谢谢,挺有意思的统计,很多数据我自己也没法从这个角度看到。
Livid
    90
Livid  
MOD
   295 天前   ❤️ 2
如果你要统计用户,可以试试这个接口:

https://www.v2ex.com/uid/1
oldshensheep
    91
oldshensheep  
OP
   295 天前
@xFrank 收藏数的话要登录才能爬,我这个没有登录。以后有时间全量再爬一次吧。
oldshensheep
    92
oldshensheep  
OP
   295 天前
@Livid 站长回复了!受宠若惊
Livid
    93
Livid  
MOD
   295 天前   ❤️ 4
另外就是,V2EX 的 APIv2 可以访问任何节点里的主题,包括 /go/flamewar 里。

https://www.v2ex.com/help/api

dqzcwxb
    94
dqzcwxb  
   295 天前
@Livid #93 大度
chrosing
    95
chrosing  
   295 天前
很强 点赞 最近在看爬虫的相关东西
fyxtc
    96
fyxtc  
   295 天前
挺有意思的
XiaoBaiYa
    97
XiaoBaiYa  
   295 天前   ❤️ 2
公司 3527
时间 2889
情况 2655
朋友 2586
价格 2574
系统 2554
建议 2538
功能 2373
链接 2350
数据 2333
用户 2286
项目 2257
闲鱼 2234
代码 2221
手机 2202
技术 2127
文件 1857
信息 1856
联系 1846
版本 1844
大佬 1786
有点 1772
老哥 1746
产品 1723
个人 1703
方法 1674
原因 1653
结果 1651
云 1637
地址 1630
东西 1592
帖子 1573
无法 1538
经验 1526
内容 1506
软件 1494
方式 1431
视频 1394
电脑 1384
事情 1362
内存 1347
服务器 1311
能力 1287
基本 1265
方案 1259
体验 1218
钱 1185
客服 1176
网站 1162
平台 1156
结贴 1154
工具 1104
硬盘 1066
图片 1059
苹果 1051
版 1047
程序 1017
京东 999
评论 999
业务 989
图 975
网络 961
账号 956
模式 950
键盘 919
部分 914
显示器 912
小时 910
游戏 908
北京 906
地方 905
机器 880
同学 870
消息 868
团队 855
官方 852
邮箱 845
环境 841
页面 840
办法 838
屏幕 823
文档 816
全部 794
小米 790
电池 781
岗位 775
性能 750
事 748
域名 743
总结 742
路由器 739
上海 738
记录 737
电话 736
腾讯 727
密码 719
浏览器 705
速度 700
效果 700
工程师 696

顺便做了个前一百的词频分析
cdwyd
    98
cdwyd  
   295 天前 via Android
没有水深火热,失去了本站的灵魂
jeffh
    99
jeffh  
   295 天前
@bshu #21 我很明确知道这个数据是不准的( op 自己也说了),我看这个数据就是图一乐,如果有人把这个作为官方统计数据上纲上线的话,能怪别人吗?
jeffh
    100
jeffh  
   295 天前
@darkengine #46 站长都不认识是吧,关你进小黑屋清醒一下(手动狗头)
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2826 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 06:18 · PVG 14:18 · LAX 23:18 · JFK 02:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.