编写了几次recipe抓取网页上的内容,这次发现抓取中总是出现某些网页下载失败,因为calibre的出错信息比较简单,无法进行进一步的判断。出错信息如图:
如果程序有错,那么实际上其它的章节都下载正常。经过反复的查看,发现每次都是每一,五,九章节下载出错,重复性很一致。问题如果不是程序,那么应该是页面的代码有什么不一样,可每次用浏览器打开相应章节页面均正常,没有出错,而且网页内容也可以在源代码中看到,那么也不是该相应章节有什么与众不同的防范措施。问题究竟出在哪哪儿呢?
既然是一、五、九章节,这章节的url会不会有什么问题,造成只能用浏览器打开,不能用程序下载呢?于是反复分析目录页,终于发现,这几个页面的url在.html后多了一个空格,成了href="xxxxxxxxxxxxxxxxxxxxx.html "。这样浏览器会正确打开网页,而calibre的下载程序不会自动去除空格,打开网页就会出错,造成下载失败。发现了问题还是比较容易解决的,在获取url的字符串上调用strip()方法,出险url中的空格,然后生成feeds,下载网页成功,再也不见下载失败的提示,生成的电子书也不再缺少章节了。
由此&