1. ホーム
  2. python

[解決済み] beautifulsoupで属性値を抽出する

2022-02-03 21:26:25

質問

あるWebページの特定のquot;input;タグにある1つのquot;value;属性の内容を抽出しようとしています。次のようなコードを使っています。

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 = soup.find_all(attrs={"name" : "stainfo"})

input_tag はリストです(おそらく1つの要素だけを含む)。あなたが正確に何をしたいかに応じて、どちらかを行う必要があります。

output = input_tag[0]['value']

または .find() メソッドを使用すると、最初に見つかった要素を1つだけ返します。

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