上回说到,我们已经完成对页面样式的开发,那么这次该接入小说数据了
获取数据的方式,有两种:
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])
}
以上基本上就是完成了最基础的数据整理了。
在此基础上,我为了更加逼真的还原,特地抓取了更新时间,但是因为整体小说是网络资源,而正版的小说,有些章节可能都被和谐了,所以对章节的匹配又是一个问题
经过摸索,最后采用将章节名进行分词与加权,然后匹配。
最后也就是作者信息之类的了。主要难点也就是在找个合适的接口