ホームページ > バックエンド開発 > Python チュートリアル > BeautifulSoup で属性値を抽出するときに「TypeError: list indices must be integers, not str」を回避する方法は?

BeautifulSoup で属性値を抽出するときに「TypeError: list indices must be integers, not str」を回避する方法は?

Patricia Arquette
リリース: 2024-12-02 20:13:11
オリジナル
888 人が閲覧しました

How to Avoid

BeautifulSoup を使用して属性値を抽出する

使用して "input" タグ内の特定の "value" 属性の値を抽出しようとする場合BeautifulSoup で、「TypeError: list indices は str ではなく integers である必要があります」というエラー メッセージが発生する場合があります。この問題は、BeautifulSoup の .find_all() メソッドの動作方法に関する誤解から生じています。

.find_all() について

.find_all() は、出現するタグをすべて検索します。指定された属性に一致し、要素のリストを返します。これは、特定の名前を持つ入力タグの属性を抽出するときに、操作によって属性値そのものではなく、そのリストのメンバーである要素が返されることを意味します。

コードの修正

エラーを修正するには、次の 2 つの方法があります。

  1. インデックスを使用する: を使用してリスト内の要素にアクセスします。インデックス付け。最初の要素は input_tag[0] で表されます。次に、その要素の「value」属性にアクセスします。例:
input_tag = soup.find_all(attrs={"name": "stainfo"})
output = input_tag[0]['value']
ログイン後にコピー
  1. .find() を使用する: .find_all() の代わりに、.find() メソッドを使用します。最初に一致した要素のみを返します:
input_tag = soup.find(attrs={"name": "stainfo"})
output = input_tag['value']
ログイン後にコピー

これらの変更のいずれかを実装すると、コードは次のようになります。必要な属性値を適切に抽出すると、「TypeError」例外が発生します。

以上がBeautifulSoup で属性値を抽出するときに「TypeError: list indices must be integers, not str」を回避する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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