Python web scraping,如果错误则跳过url

时间:2014-08-15 01:29:08

标签: python error-handling web-scraping python-requests

我正在尝试抓一个网站(大约7000个链接,全部在列表中),而且由于我的方法,它花了很长时间,我猜我没关系(因为这意味着保持不被发现) )。但是如果我在尝试检索页面时遇到任何错误,我可以跳过它吗?现在,如果出现错误,代码会中断并给出一堆错误消息。这是我的代码:

Collection是列表和结果文件的列表。基本上,我正在尝试使用get_url_data()中的urllist运行一个循环(我有一个先前的问题要感谢)。HTTPError中的所有网址都是如此。我有一些名为Collection=[] def get_url_data(url): try: r = requests.get(url, timeout=10) r.raise_for_status() except HTTPError: return None site = bs4.BeautifulSoup(r.text) groups=site.select('div.filters') word=url.split("/")[-1] B=[] for x in groups: B.append(word) T=[a.get_text() for a in x.select('div.blahblah [class=txt]')] A1=[a.get_text() for a in site.select('div.blah [class=txt]')] if len(T)==1 and len(A1)>0 and T[0]=='verb' and A1[0]!='as in': B.append(T) B.append([a.get_text() for a in x.select('div.blahblah [class=ttl]')]) B.append([a.get_text() for a in x.select('div.blah [class=text]')]) Collection.append(B) B=[] for url in urllist: get_url_data(url) 的东西,但似乎没有处理所有错误,因此这篇文章。在一个相关的副任务中,获得一个无法处理的网址列表也会很不错,但这不是我的主要关注点(但如果有人能告诉我如何,这将会很酷)。

During handling of the above exception, another exception occurred

我认为主要的错误代码就是这个,它触发了其他的错误因为从Traceback (most recent call last): File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 319, in _make_request httplib_response = conn.getresponse(buffering=True) TypeError: getresponse() got an unexpected keyword argument 'buffering' 开始有一堆错误。

{{1}}

1 个答案:

答案 0 :(得分:2)

您可以将try-catch块看起来像这样,

try:
    r = requests.get(url, timeout=10)
    r.raise_for_status()

except Exception:
    return

Exception类将处理所有错误和异常。

如果您想收到异常消息,可以在except块中打印出来。然后,您在提升之前首先实例化异常。

except Exception as e:
    print(e.message)
    return