私は約3000のURLを持っています。私は美味しいスープを試してみましたが、いくつかのエラーが出て混乱しています。私がしたいのは、すべての内部サーバーエラーURLを無視し、エラーがなく、以下のコードで書かれたテキストをフェッチするだけのものです。Pythonとバイパスのエラーでウェブを掻く方法
マイコード:
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
エラーは、すべてのURLが同じ問題があることを意味しています - 内部サーバーエラーが?この場合、私ができる方法の1つは、httpエラー500がなくても試してみるtryとexceptブロックを含めることです。
編集:
私は「合格」または「継続」は正しいことやっている場合は特に、エラーを回避するために、次のコードを使用してみました、私はそれが動作しているかわからない:
を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
いいえ、実際には、1つのURLが500エラーを返したことを意味します。それを処理するには 'try' /' except'を使うべきです。 –
上記のコメントのコードは読めません。 –
あなたの編集は、呼び出しが成功するまでループします。永遠になる可能性があります。 @KlausD。 –