【问题标题】:python urllib2 try to open url until it works [duplicate]python urllib2尝试打开url直到它工作[重复]
【发布时间】:2016-01-18 12:08:25
【问题描述】:

我需要从网站收集一些数据,实际上是一些文本以供进一步分析。由于我不是网络抓取方面的专家,所以我第一步是获取包含我需要的文档的 url。问题是,有时我可以获得文件,但有时我会收到连接超时错误。所以我想要一种尝试的方法,直到我能得到网站的响应,这就是我所拥有的:

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 有所需的 url,一个 url 的示例:

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

总结:

有时我可以获取文档,有时我由于超时而无法获取,我希望python尝试直到它可以获取文档...

【问题讨论】:

    标签: python python-2.7 web-scraping urllib2


    【解决方案1】:

    你必须更好地构建你的函数来获取站点信息。拥有该功能后,您可以使用retry decorator。

    【讨论】:

      【解决方案2】:

      您可以像这样使用urllib2.urlopen() 的超时参数:Handling urllib2's timeout? - Python, 和一个重试装饰器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-07
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2015-09-01
        相关资源
        最近更新 更多