2016-11-27 18 views
0

私はpython webscrappingを使って美しいスープを使って情報を抽出しようとしています。ここにセクションがあります。pythonで値のエラーを抽出するbeautifulsoup web scraping

<div class="result-value" data-reactid=".0.0.3.0.0.3.$0.1.1"> 
<span data-reactid=".0.0.3.0.0.3.$0.1.1.0">1.1</span> 
<span class="result-value-unit" data-reactid=".0.0.3.0.0.3.$0.1.1.1">MB</span> 
</div> 

私が使っているコードの

パートが1.1値を取得したいが

try: 
    Area =soup.select(".result-value span") 

    print Area 

except StandardError as e: 
    converted_date="Error was {0}".format(e) 
    print converted_date 

結果イム

[] 

何間違っている可能性がされてきているのですか?

+0

ここに新しいのはstackoverflowで。申し訳ありませんが、私は基準を守っていません。私はこのプラットフォームで従わなければならない標準的な手順を読んでいます。誰も気にしないといいですね。 – info

+0

'soup.select'が指定したものを見つけられない場合、空のリスト' [] 'を返します。だから 'try ... except'はこの場合エラーを捕捉しないかもしれません。 – mikeqfu

+0

なぜあなたはそこに価値を捕まえていないのか考えていますか? bs4マニュアルに従ってください – info

答えて

0

あなたがdata-reactidの価値を知っていると仮定すると、あなたはこのように、正しい要素を取得することができます:

soup.findAll("span", {"data-reactid": ".0.0.3.0.0.3.$0.1.1.0"}) 
+0

[[]は出力 – info

+0

です。はいデータの値を知っていますreactid – info

+0

実際にソースコードが読み込まれているかどうか確認できますか? プリント(soup.prettify()) –

0

ここでも、soup.find('span', {'data-reactid': '.0.0.3.0.0.3.$0.1.1.0'}).text作品ならば、コードがすべてのエラーメッセージを返しません。少なくともあなたのtry...except...機能が動作していることを示すメッセージが表示されます。私はあなたのhtmlfileに問題があると思っています。それはstrではなく、bytesでなければなりません。

from urllib.request import urlopen 

htmlfile = urlopen(url).read().decode('utf-8') # if errors occur here, try: htmlfile = urlopen(url).read().decode('utf-8', errors='ignore') 

soup = BeautifulSoup(htmlfile, 'lxml') 

次にコードを少し修正することをお勧めします。

関連する問題