2017-08-10 14 views
1

ウェブページをスクラップしようとしています。すべてのデータがそこに存在する特定のケースでは、ユーザーが「適格」であるときに400エラーを返します。私は、テキストが空であるかどうかを判断する方法を理解しようとしています。ここでBS4、.textが空であるかどうかを調べる

はHTMLです:

https://hastebin.com/abotejaquy.scala - あなたがタグのほとんどは、それらのテキスト(「シルバーIV」)を持っているが、それらの二つは何もありません見ることができるように。

シルバーIII

シルバーII

シルバーIV

(スペース:

https://hastebin.com/xubibivara.py

をそれがこれを返します。ここでは

は私がしようとしていることに私のコードです予選はb E)

銀I

銀III

銀III

適格があるべきである(スペース)

シルバーV

銀IV

- テキストは表示されますが、予選は表示されません。

おかげ

答えて

0

は、私はあなたの特定の問題についてはよく分からないですが、コードの初稿の目安 - 何かが例外が発生した場合、あなただけの例外を処理することができます。それは特にスクレーパーに当てはまります。

以下のコードを見てみましょう:私は例外を再現することはできませんが、それはいくつかのように見えるBS4インポートBeautifulSoupから インポート要求

request = requests.get(url) 
soup = BeautifulSoup(request.content, 'html.parser') 
all_tags = list(soup.find_all('div', class_='profile-ranking-rank')) 
kitname = list(soup.find_all('div', class_="profile-ranking-title")) 

for tag in all_tags: 
    try: 
     print (tag.text) 
    except Exception: 
     print("Qualifying") 

UPDATE

をスパンには空文字列があります。道のBS4が、それはあなたがこの場合は、文字列の長さをチェックする必要がありますので、空の文字列ではなく、該当なしとして.textを持つことですハンドル:Pythonはは `false`として空の文字列を考えているので

request = requests.get(url) 
soup = BeautifulSoup(request.content, 'html.parser') 
all_tags = list(soup.find_all('div', class_='profile-ranking-rank')) 
kitname = list(soup.find_all('div', class_="profile-ranking-title")) 

for tag in all_tags: 
    if len(tag.text) > 0: 
     print (tag.text) 
    else: 
     print("Qualifying") 
+1

、あなたがあれば、'置き換えることができますlen(tag.text)> 0: 'if tag.text: ' –

+1

暗黙的より明示的です。 :-) –

関連する問題