使用BeautifulSoup 存取屬性值
嘗試使用BeautifulSoup 和下列程式碼從特定輸入標記中提取值>
發生錯誤:TypeError:列表索引必須是整數,而不是str.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)
BeautifulSoup 的文件表明字串在這種情況下不應該造成問題。然而,錯誤似乎另有說明。
解問題在於使用 .findAll(),它傳回所有找到的元素的清單。要存取特定標籤的value 屬性,應使用以下方法:
. find_all() 傳回所有找到的元素的列表,而.find_all()僅傳回找到的一個(第一個)
由於BeautifulSoup 回傳找到的元素的列表,因此有必要指定要存取的元素的索引。在這種情況下,可以透過以下方式存取清單中第一個元素的value 屬性:
output = inputTag[0]['value']
除了使用.find_all() 之外,還可以使用.find()直接取得第一個找到的元素:
inputTag = soup.find(attrs={"name": "stainfo"}) output = inputTag['value']
以上是如何正確存取 BeautifulSoup 的 `findAll()` 或 `find_all()` 傳回的清單中的屬性值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!