ホームページ >バックエンド開発 >Python チュートリアル >BeautifulSoup がクラスごとに要素を取得するときに KeyError をスローするのはなぜですか?それを修正するにはどうすればよいですか?
エラー処理: 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 サイトの他の関連記事を参照してください。