python urllib2尝试打开url直到它工作

时间:2015-10-20 01:01:30

标签: python python-2.7 web-scraping urllib2

我需要从网站收集一些数据,实际上它是一些文本供进一步分析。由于我不是网络报废的专家,我做了第一步,获取我需要的文件的网址。问题是,有时我可以获取文档,但有时我会得到连接超时错误。所以我想要一种尝试方式,直到我能得到网站回复,这就是我所拥有的:

from html2text import *
import urllib2
import html2text
from bs4 import BeautifulSoup

id = 1
with open("urls.txt") as f:
    for url in f:
        print url
        html = urllib2.urlopen(url).read()
        soup = BeautifulSoup(html, "html.parser")

        with codecs.open("documentos/" + str(id) + ".txt", "w", "utf-8-sig") as temp:
            temp.write(soup.get_text())
        id += 1

其中urls.txt包含所需的网址,例如网址:

我怎样才能做到这一点?如果我只需要10个文件,我可以处理它,但我需要超过500个...所以我不能手动完成。

总结:

有时候我可以获取文件,有时我不能因为超时,我希望python尝试直到它能获得文件......

2 个答案:

答案 0 :(得分:1)

您需要更好地构建函数以获取网站信息。完成该功能后,您可以使用retry decorator

答案 1 :(得分:0)

您可以使用urllib2.urlopen()超时参数,如下所示:Handling urllib2's timeout? - Python, 和一个重试装饰。