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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 05:51:14601ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。