ホームページ >バックエンド開発 >Python チュートリアル >BeautifulSoup で属性値を抽出する場合、TypeError: list インデックスは str ではなく整数である必要があるを解決する方法

BeautifulSoup で属性値を抽出する場合、TypeError: list インデックスは str ではなく整数である必要があるを解決する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-24 17:27:14478ブラウズ

How to Resolve TypeError: list indices must be integers, not str, When Extracting Attribute Values with BeautifulSoup?

BeautifulSoup による属性値の抽出: Python での TypeError の解決

Web ページ上の特定の「input」タグで、BeautifulSoup を呼び出すことにしました。次のコードを使用して、あなたはミッションに着手しました:

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTag = soup.findAll(attrs={"name": "stainfo"})

output = inputTag['value']

print str(output)

しかし、あなたの試みは謎の TypeError: リストのインデックスは str ではなく整数でなければなりませんによって妨げられました。 BeautifulSoup のドキュメントに慰めを求めていると、絶望が忍び寄ってきましたが、その複雑さはあなたを混乱させました。この謎に光を当ててみましょう。

find_all() メソッドは、一致するすべての要素のリストを返します。あなたの場合、input_tag はリストであり、おそらく要素が 1 つだけ含まれています。後続の行、output = inputTag['value'] は、リストの最初の要素に関連付けられた辞書の値へのアクセスを試みます。リストのインデックスは整数である必要があるため、この操作は報告されたエラーで失敗します。

問題を修正するには、2 つのオプションがあります:

オプション 1: 最初の要素の選択

を使用してリストから最初の要素を明示的に選択しますインデックス作成:

input_tag = soup.find_all(attrs={"name": "stainfo"})
output = input_tag[0]['value']

オプション 2: find() メソッドの使用

最初に一致した要素のみを返す find() メソッドを使用します:

input_tag = soup.find(attrs={"name": "stainfo"})
output = input_tag['value']

これらのアプローチのいずれかを実装することで、目的の属性値を効果的に抽出し、それ以上の作業を行わずに BeautifulSoup の旅を続けることができます。障害物。

以上がBeautifulSoup で属性値を抽出する場合、TypeError: list インデックスは str ではなく整数である必要があるを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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