[英]Python web scraping, skip url if error
我正在尝试抓取一个站点(大约7000个链接,全部在一个列表中),由于我的方法,这花费了很长的时间,我想我对此表示满意(因为这意味着不要被发现)。 但是,如果在尝试检索页面时遇到任何错误,我可以跳过它吗? 现在,如果有错误,代码会中断并给我一堆错误消息。 这是我的代码:
Collection
是列表和结果文件的列表。 基本上,我试图运行具有循环get_url_data()
我有一个先前的问题为感谢)我所有的网址在urllist
。 我有一个叫做HTTPError
东西,但是它似乎无法处理所有错误,因此本文发布了。 在一个相关的附带问题中,获得无法处理的URL列表也将是一件很不错的事,但这不是我的主要关切(但如果有人可以向我展示方法,那将很酷)。
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
出现了许多错误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'
您可以使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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.