2013-07-12 2 views
0

Я написал следующий код в python, который идет на url в массиве и находит конкретную информацию об этой странице - скребок для веб-сайтов. Он принимает массив потоков Reddit и выводит оценку каждого потока. Эта программа почти никогда не выполняется полностью. Обычно, я получаю до 5 или около того итераций, прежде чем получать сообщение об ошибке ниже. Может кто-то, пожалуйста, помогите мне разобраться в этом?Пожалуйста, помогите мне взломать это сообщение об ошибке? - python

import urllib2 
from bs4 import BeautifulSoup 

urls = ['http://www.reddit.com/r/videos/comments/1i12o2/soap_precursor_to_a_lot_of_other_hilarious_shows/', 'http://www.reddit.com/r/videos/comments/1i12nx/kid_reporter_interviews_ryan_reynolds/', 'http://www.reddit.com/r/videos/comments/1i12ml/just_my_two_boys_going_full_derp_shocking_plot/'] 

for x in urls: 
    f = urllib2.urlopen(x) 
    data = f.read() 
    soup = BeautifulSoup(data) 
    span = soup.find('span', attrs={'class':'number'}) 
    print '{}:{}'.format(x, span.text) 

Сообщение об ошибке я получаю:

Traceback (most recent call last): 
    File "C:/Users/jlazarus/Documents/YouTubeparse2.py", line 7, in <module> 
    f = urllib2.urlopen(x) 
    File "C:\Python27\lib\urllib2.py", line 127, in urlopen 
    return _opener.open(url, data, timeout) 
    File "C:\Python27\lib\urllib2.py", line 410, in open 
    response = meth(req, response) 
    File "C:\Python27\lib\urllib2.py", line 523, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "C:\Python27\lib\urllib2.py", line 448, in error 
    return self._call_chain(*args) 
    File "C:\Python27\lib\urllib2.py", line 382, in _call_chain 
    result = func(*args) 
    File "C:\Python27\lib\urllib2.py", line 531, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
HTTPError: HTTP Error 429: Unknown 
+4

дубликат http://stackoverflow.com/questions/13213048/urllib2-http-error-429 –

ответ

0

Игнорировать с попытки и за исключением правила, чтобы поймать ошибку, это то, что вы хотите, если вы просто хотите, чтобы пропустить ошибку.

import urllib2 
from bs4 import BeautifulSoup 

urls = ['http://www.reddit.com/r/videos/comments/1i12o2/soap_precursor_to_a_lot_of_other_hilarious_shows/', 'http://www.reddit.com/r/videos/comments/1i12nx/kid_reporter_interviews_ryan_reynolds/', 'http://www.reddit.com/r/videos/comments/1i12ml/just_my_two_boys_going_full_derp_shocking_plot/'] 

for x in urls: 
    try: 
     f = urllib2.urlopen(x) 
     data = f.read() 
     soup = BeautifulSoup(data) 
     span = soup.find('span', attrs={'class':'number'}) 
     print '{}:{}'.format(x, span.text) 
    except HTTPError: 
     print("HTTP Error, continuing") 
Смежные вопросы