上回说到,我们已经完成对页面样式的开发,那么这次该接入小说数据了

获取数据的方式,有两种:

1.从小说网直接爬取

至今还能存活下来的小说网,已经有资本爸爸的接入了,反爬手段应该不错,已经有法律风险,更何况咱们也没办法拿到 VIP 章节

2.整本小说裁切

网上很多 txt 下载,大概率能获取到未被和谐的原汁原味小说

综合考量过后,我选择了第二种方式,以下是我遇到一些问题记录

第一百一十五章赠君火枪

第一百七十七章 宁惹阎王,莫惹三哥(1)

第三卷 第55章 输家

正文 第44章

第三卷 陈家有人叫浮生 第36章 老爷子

这几种算是比较经典的,标准章节名,基于此,提炼了一个正则式

/(?:正文\s*)?(?:第[零一二三四五六七八九十百千万0-9]+卷\s+[^\n]*)?\s{1}第[零一二三四五六七八九十百千万0-9]+章\s?(?!,)[^\n]*\s{1}/g

对了,因为考虑到法律的风险,只提供工具,不提供书籍资源,所以需要用户自行上传txt文本

// 前端解析 txt 文件的代码
 <input type="file" onChange={change} />
 const change = async function (e) {
    const reader = new FileReader()
    reader.onload = async (e) => {
       // e.target.result
    }
    reader.readAsText(e.target.files[0])
 }

以上基本上就是完成了最基础的数据整理了。

在此基础上,我为了更加逼真的还原,特地抓取了更新时间,但是因为整体小说是网络资源,而正版的小说,有些章节可能都被和谐了,所以对章节的匹配又是一个问题

经过摸索,最后采用将章节名进行分词与加权,然后匹配。

最后也就是作者信息之类的了。主要难点也就是在找个合适的接口