SPPL2众筹数据爬虫

在这篇文章里,我将告诉你电子小说界的传说中的雾件SPPL2什么时候发售。

update:太惨了,minori在2019年2月28日真的宣布倒闭了。我不该乌鸦嘴

基本思路是用Python爬取著名的互联网网页存档项目Archive.org的Wayback Machine过去收集的游戏开发商minori在mangagamer上披露的SPPL2众筹金额数据。

WaybackMachine上的快照
看了一下wayback machine抓的网页快照还挺多的,大概能一个月更新一次。每一个圆点代表有抓取快照记录的一天。鼠标移上去就能显示出存档的超链接,那就可以用Python把这些超链接抓袭来。顺便一提这种js动态生成的div一般来说得用上Selenium等重量级浏览器模拟工具,好在这次也就2014-2018五年,我就用鼠标手工点击了,然后按F12打开开发者工具把页面当前结构源码存下来就行。接着用Python正则出存档页的地址。关键代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rawfile= open(input_file_name,encoding='utf8')
sep = '\n'
archivedate_list=[]
for each in rawfile:
archivedate=re.findall(r'/web/201*mangagamer.org/minori/',str(each))
if archivedate!=[]:
print(archivedate)
archivedate_list.append(archivedate[0])
archivedates = list(set(archivedate_list))

for each in rawfile:
dollar,date=[],[]
dollar=re.findall('\$(.*)<',str(each))
date=re.findall('Last updated: (.*)<br>',str(each))
if dollar!=[] and dollar!=['']:
print(dollar)
if date!=[] and date !=['']:
print(date)

稍微整理一下,就得到了大约116个快照点的链接。这样就可以用request库把每一次快照的html弄下来了。在下一步处理之前可以先拿去格式化一下源码,免得由于\r\n之类的换行回车符干扰正则识别。

其实不用正则的话也试一下beautifulsoup库。这个库还是很好用的,就是在解析器的选择上有些坑。LXML比较快,但有的写得不规范的html用LXML会解析失败,你就需要用默认的Python自带的html.parser,再不行的话就得上html5lib,据说html5lib是模拟浏览器的解析方式。故而兼容性上html5lib>html.parser>lxml,而执行速度上反之。

1
2
3
4
5
6
7
for parent, dirnames, filenames in os.walk(work_dir,  followlinks=True):
for filename in filenames:
file_path = os.path.join(parent, filename)
soup = BeautifulSoup(open(file_path,'r',encoding='utf8'),'lxml')
d=str(soup.select('span.funded')[0])
i=d.find("Last updated")
print("日期",d[i+13:i+25].replace('\n',''),"金额",soup.select('span.current')[0].get_text())

然后日期和众筹金额列就生成出来了,粘贴到Excel里面去(懒得用Eviews或者SPSS之类工具,数据点也就百来个,也没什么年度波动规律)
画了个折线图,然后把minori最近几年发售的游戏标上去,大概是这样:

历史曲线

那么SPPL2什么时候发售呢?看着走势不大妙啊,感觉30万美元都要等2020年了吧。我们可以从中等态势和悲观态势连个徒手拟合一下。

中等心态估测大概2023年 悲观心态估计,永远无法到达30万美元

将上作TRINOLINE GENESIS的发售带来的资金额的异常升高(图里2018年年初的陡坡)作为忠实粉丝推动销量的异常因素而在拟合时排除掉,从而按照大多数月份的平稳走势估计的话会是图上这样子。

其实凭心而论比较大的可能性让SPPL2启动制作计划的35万美元目标应该要2023年,只要不出一些大茬子,因为电子小说业界总体是在衰退的。