使用python或wget抓取网站-等待响应问题



我正试图从同一服务器下载超过30万个HTML文件。我在列表/文本文件中有URL。我的第一次尝试是使用python-urllib/requests,但速度非常慢,在几个链接(10-20(后就会被卡住。代码示例:

for i, url in enumerate(url_list):
urllib.request.urlretrieve(url, "./pages/"+str(i))

然后我试着简单地使用这样的wget:

wget -i links_file.txt -U netscape

wget工作得很好,它下载1-5k的文件没有问题,而且看起来很快,但后来被随机(?(文件卡住了:

Connecting to <website>... connected. HTTP request sent, awaiting response...

现在我可以看到它在哪个URL上被卡住了,只需停止运行,然后从同一点重新开始,它就可以再次完美地进行1-5k的下载。由于我不能在每次它被卡住时手动执行此操作,直到我最终拥有所有300k个文件,所以我想知道如果wget等待响应的时间太长,然后再尝试,是否有办法自动停止它?或者还有其他更好的方法可以自动下载这么多HTML文件吗?

如果wget等待响应的时间过长,我如何自动停止它然后再试一次?

您要查找的内容称为超时重试次数。在wget中,您可以使用--timeout一次设置所有超时,或者使用的特定超时

--dns-timeout
--connect-timeout
--read-timeout

在任何一种情况下,您都应该提供=之后的秒数值,例如--timeout=60

使用--tries设置重试次数(默认值:20(,例如--tries=10,但请记住,如果出现致命错误,则不会进行重试。

您还可以找到有用的--no-clobber,其效果是,如果已经存在这样的命名文件(将被覆盖(,则文件不会被下载

相关内容

  • 没有找到相关文章

最新更新