起因

之前我一直在追一部作品「助けた美少女JKが可哀そうすぎて同棲を始めるしかなかった」

但是由于这部作品描写内容过于真实,并且有很多残忍的描写,但是由于作者的疏忽,并没有加上相关Tag

导致这部作品的评论区两极分化严重,支持的非常支持,喷作者的说的话也很过分

作者于作品完结后一个月的2020年9月28日这一天,更新了一章标题为《この作品について》的文章

大概意思是说,这篇文章本来是要参赛的,并且已经过了中期,但是由于后半段内容的原因,作者自己决定放弃参加

この作品は第2回ファミ通文庫大賞へ参加しており、中間選考を突破しておりました。最終審査の結果が発表される間際でございますが、この度、第2回ファミ通文庫大賞の参加を辞退することに決めました。

并且这个作品将在カクヨム上只保留到10月31日,之后将完全删除

また、辞退が確定した場合、本作品の公開を10月いっぱいまでとし、10月31日をもちまして、本作のすべてのデータを完全消去することを決断いたしました。バックアップは取りません。

我个人是非常喜欢这部作品的,甚至之前已经找作者授权进行翻译转载了(预计是本博客上单独一篇文章介绍这部作品,但是截止到今天(2020-9-29)我还没写完,暂时就先不放链接了(隐藏状态尚未公开))。

原作者要删除的话,是非常可惜的,但是我觉得原作者也会有自己的原因吧。。这里不做过多讨论

但是在我将来想重新阅读的时候,没了可就不好了

因此有了这篇文章

代码部分

这次的爬虫依然是使用python去编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import urllib.request  # 用去获取网站链接请求
from bs4 import BeautifulSoup # 用于读取网站内容
# %%
url = "https://kakuyomu.jp/works/1177354054887666399"
f = urllib.request.urlopen(url)
html = f.read().decode('utf-8')
# %%
f = open("SecondPage.html",'r+',encoding="utf-8")
f.write(html)
# %%
soup = BeautifulSoup(html, "html.parser")
# %%
linkPart = soup.findAll(name='a',attrs={"class","widget-toc-episode-episodeTitle"})
# %%
linkList = []
for item in linkPart:
linkList.append("https://kakuyomu.jp"+item.get('href'))
# %%
linkList
# %%

# %%
urlChild = linkList[0]
childSoup = BeautifulSoup(urllib.request.urlopen(urlChild).read().decode('utf-8'),"html.parser")
MainBody = childSoup.find('div',attrs={'class','widget-episodeBody js-episode-body'})
# %%
# -*-coding:utf8-*-
# encoding:utf-8
# %%
br = MainBody.findAll('p')[1].get_text()
# %%
# d2cTable = ['一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十','二十']
title = soup.find('h1',id="workTitle").a.string + '.txt' # 文件名/小说标题
print('写入文件')
txtFile = open(title,'a', encoding='utf-8') # 追加方式打开
count = 0
loadLine = 1
totalNumber = str(len(linkList))
for childLinkItem in linkList:
print("正在写入链接({}/{})".format(str(loadLine),totalNumber)+childLinkItem)
loadLine += 1
childSoup = BeautifulSoup(urllib.request.urlopen(childLinkItem).read().decode('utf-8'),"html.parser")
ZhangTitle = childSoup.find('p',attrs={"class","chapterTitle level1 js-vertical-composition-item"})
ZhangTitle = ZhangTitle if(None == ZhangTitle) else ZhangTitle.span.string
if(None != ZhangTitle):
print('正在写入章:'+ZhangTitle)
txtFile.write('\n'+ ZhangTitle+'\n')
JieTitle = childSoup.find('p',attrs={"class","chapterTitle level2 js-vertical-composition-item"})
JieTitle = JieTitle if(None == JieTitle) else JieTitle.span.string
if(None != JieTitle):
print('正在写入大节:'+JieTitle)
txtFile.write('\n'+ JieTitle+'\n')
count = 0
else:
count += 1
charpTitle = "\n\n第"+ str(count) + "节 "+ childSoup.find('p',attrs={"class","widget-episodeTitle js-vertical-composition-item"}).string
txtFile.write('\n\n\n'+ charpTitle)
MainBody = childSoup.find('div',attrs={'class','widget-episodeBody js-episode-body'})
PTags = MainBody.findAll('p')
for childPTag in PTags:
text = childPTag.get_text()
txtFile.write('\n'+ text if(br != text) else '\n')

print("链接"+childLinkItem+"写入完成")
print("小说《"+soup.find('h1',id="workTitle").a.string+"》已全部写入完成")
# %%

代码中url可以用待爬取小说的介绍页面进行替换

这里以这部作品链接为例子

1
url = "https://kakuyomu.jp/works/1177354054894884567"

声明

我尊重かんなづき的决定,因此不会提供任何的爬取内容

爬取的文件我也仅仅会自用,不会进行任何互联网传播。

关于我的那篇翻译介绍文章,暂时决定不放出,待和原作者商讨以后再做决定。

这里留下官网链接:https://kakuyomu.jp/works/1177354054894884567

如果你感兴趣的话,在原作者没有删除之前去支持一下吧。