我有大约3000个网址,其中一些工作,而其中一些不在。我试过运行漂亮的汤,但我得到了一些不同的错误,这让我感到困惑 - 我不确定尝试什么样的尝试,除了我应该放入代码的块。我想要做的是忽略所有内部服务器错误网址,只使用那些没有错误的网址,并获取下面代码中所写的文本。
我的代码:
mega = [[]] # list in a list
for i in range(len(ab)): # ab as a dictionary with multiple keys
... myurl = soc[i]['the_urls']
... html = urllib2.urlopen(myurl).read()
... soup = BeautifulSoup(html, "html.parser")
... row = soup.findAll('tr')
... for r in row:
... mega.append([r.get_text()]) # scrape all the texts
错误:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 435, in open
response = meth(req, response)
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 548, in http_response
'http', request, response, code, msg, hdrs)
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 473, in error
return self._call_chain(*args)
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 407, in _call_chain
result = func(*args)
File "/Users/name/anaconda/lib/python2.7/urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error
错误是否意味着所有网址都存在同样的问题 - 内部服务器错误?在这种情况下,我想我可以做的一种方法是包括一个try和except块,如果没有http错误500则表示尝试,如果有错误则通过。
编辑:
我尝试使用以下代码来绕过错误,我不确定它是否正常工作,特别是如果&#34;传递&#34;或者&#34;继续&#34;做得对:
for i in range(len(soc)):
... myurl = soc[i]['report_url']
... while True:
... try:
... html = urllib2.urlopen(myurl).read()
... break
... except urllib2.HTTPError:
... continue
... soup = BeautifulSoup(html, "html.parser")
... row = soup.findAll('tr')
... for r in row:
... mega.append([r.get_text()]) # scrape the text
答案 0 :(得分:0)
错误是否意味着所有网址都存在同样的问题 - 内部服务器错误?
并非总是如此。因为5XX服务器错误的原因可能是:
使用try/except
来处理问题并转到下一个网址。
此外,如果你和你在一起可以制作某种类型的统计数据,如果你在某个域上看到很多错误 - 猜测它现在不起作用并将其网址移到列表的底部。