使用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中文網其他相關文章!