首頁 >後端開發 >Python教學 >使用 BeautifulSoup 提取屬性值時如何解決類型錯誤:列表索引必須是整數,而不是 str?

使用 BeautifulSoup 提取屬性值時如何解決類型錯誤:列表索引必須是整數,而不是 str?

Linda Hamilton
Linda Hamilton原創
2024-12-24 17:27:14480瀏覽

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

使用BeautifulSoup 提取屬性值:解決Python 中的TypeError

尋求從網頁上的特定「輸入」標籤,您決定呼叫BeautiSoup 。使用以下程式碼,您開始執行您的任務:

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 是一個列表,可能只包含一個元素。後續行,output = inputTag['value'],嘗試存取與清單的第一個元素關聯的字典的值。由於列表索引應該是整數,因此此操作失敗並報告錯誤。

要修正此問題,您有兩個選項:

選項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 提取屬性值時如何解決類型錯誤:列表索引必須是整數,而不是 str?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn