【AIGC】抓一本小说的正确顺序:先拿目录,最后才碰正文
这篇讲什么 不讲某个站怎么抓,讲的是:**从零开始要把「一整本小说」落到本地 txt,中间必须依次解决哪几件事。**顺序错了,代码就只是碰巧能跑。 边界先说清:全文不出现站点名、域名、书名,也不放任何章节原文,只讲方法。 一、先拿目录,别先拿正文 最常见的错误起手是:打开某一章,F12,把正文框选出来,写个循环。这么写能抓一章,抓不了一本书。 正确的第一个目标是目录页。理由很实在:正文页会缺章、会挂「上一页/下一页」、会插推荐位,而且正文页给不出「这本书一共多少章」这个信息。目录页是唯一同时提供「章节有序清单 + 每章地址」的地方,它是整本书的真相来源。数量对不对、顺序对不对,后面都得回到它来核。 目录页要取两样东西,分两次取:链接列表和标题列表,然后按同一个下标配对。这么写有个前提——两个列表长度必须相等。一旦目录里混进非章节链接,两个列表整体错位,你会拿到一堆用章节名命名、内容却是简介页的文件。而书名页同时挂「相关推荐」「作者其它作品」是非常普遍的做法。 **所以限定结构层级,比把所有链接取出来重要。**宁可只取目录容器里某个特定路径下的 a,也不要 //a 全取。目录这一步我愿意花的功夫基本就在这。 二、URL 是相对还是绝对,要在下载之前判断 模板站的章节链接经常是 /book/123/4567.html 这种相对路径。直接丢给 requests 要么报错,要么拿到莫名其妙的东西。 ...