ホームページ > バックエンド開発 > Python チュートリアル > BeautifulSoup がクラスごとに要素を取得するときに KeyError をスローするのはなぜですか?それを修正するにはどうすればよいですか?

BeautifulSoup がクラスごとに要素を取得するときに KeyError をスローするのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-02 05:51:14
オリジナル
598 人が閲覧しました

Why Does BeautifulSoup Throw a KeyError When Retrieving Elements by Class and How Can I Fix It?

エラー処理: BeautifulSoup を使用したクラス別の要素の取得

BeautifulSoup を使用して「class」属性を持つ HTML 要素を解析すると、エラーが発生する場合があります。このエラーは、["class"] 構文を使用して "class" 属性を取得しようとすると発生します。たとえば、以下のコードはこれを示しています:

import BeautifulSoup
sdata = '...'
soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs:
    if (div["class"] == "stylelistrow"):
        print div
ログイン後にコピー

実行すると、スクリプトは次のようなエラーで終了する可能性があります:

File "./beautifulcoding.py", line 130, in getlanguage
  if (div["class"] == "stylelistrow"):
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__
   return self._getAttrMap()[key]
KeyError: 'class'
ログイン後にコピー

解決策: find_all を使用します。

このエラーを解決するには、BeautifulSoup の find_all メソッドを利用して要素の検索を絞り込むようにコードを変更します。特定のクラスで。次の改訂されたコード スニペットは、これを示しています。

mydivs = soup.find_all("div", {"class": "stylelistrow"})
ログイン後にコピー

find_all メソッドを使用し、「class」属性をキーとして、目的のクラス値を値として含む辞書を指定することにより、スクリプトは要素を正確に取得できます。指定されたクラス。このソリューションはエラーに効果的に対処し、必要なクラス属性を持つ要素を取得できるようにします。

以上がBeautifulSoup がクラスごとに要素を取得するときに KeyError をスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート