2016-10-19 5 views
1

私は完全にPythonにnoobですので、私の間違いや語彙の不足を許してください。私はBeautifulSoupでいくつかのURLを廃止しようとしています。私のURLはGAのAPIコールから来ており、そのうちのいくつかは応答しません。傷ついたURLが応答しないときにBeautifulSoupでのエラー処理

BeautifulSoupが何も返さないURLを無視するようにスクリプトを作成するにはどうすればよいですか?

if results: 
    for row in results.get('rows'): 
     rawdata.append(row[0]) 
    else: 
    print 'No results found' 

    urllist = [mystring + x for x in rawdata] 

    for row in urllist[4:8]: 

    page = urllib2.urlopen(row) 
    soup = BeautifulSoup(page, 'html.parser') 


    name_box = soup.find(attrs={'class': 'nb-shares'}) 
    share = name_box.text.strip() 

    # save the data in tuple 
    sharelist.append((row,share)) 

    print(sharelist) 

が、私はこれを使用しようとしました::

は、ここに私のコードです

except Exception: 
    pass 

が、私はどこ知っていると、いくつかの構文エラーを得ません。私は他の質問を見てきましたが、私には答えが見つかりません。

+0

あなたは 'except' – Mangohero1

答えて

1

あなたはname_box変数の値を確認すること - 何も見つからなかった場合には、None次のようになります。

for row in urllist[4:8]: 
    page = urllib2.urlopen(row) 
    soup = BeautifulSoup(page, 'html.parser') 

    name_box = soup.find(attrs={'class': 'nb-shares'}) 
    if name_box is None: 
     continue 

    # ... 
+0

前に' try'を必要と私はそれが働いていると思いますが、私は実際に確認することができませんUnicodeEncodeError: 'ascii'コーデックは文字 'u200b'を位置22にエンコードできません:序数は範囲内にありません(128) ' –

関連する問題