首頁 >後端開發 >Python教學 >如何正確存取 BeautifulSoup 的 `findAll()` 或 `find_all()` 傳回的清單中的屬性值?

如何正確存取 BeautifulSoup 的 `findAll()` 或 `find_all()` 傳回的清單中的屬性值?

DDD
DDD原創
2024-12-08 02:40:12386瀏覽

How to Correctly Access Attribute Values from a List Returned by BeautifulSoup's `findAll()` or `find_all()`?

使用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 屬性,應使用以下方法:

  1. 使用.find_all() 而不是.findAll():

    . find_all() 傳回所有找到的元素的列表,而.find_all()僅傳回找到的一個(第一個)

  2. 存取清單中第一個元素的value 屬性:

    由於BeautifulSoup 回傳找到的元素的列表,因此有必要指定要存取的元素的索引。在這種情況下,可以透過以下方式存取清單中第一個元素的value 屬性:

    output = inputTag[0]['value']
  3. 或者,使用.find() 取得第一個元素:

    除了使用.find_all() 之外,還可以使用.find()直接取得第一個找到的元素:

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

以上是如何正確存取 BeautifulSoup 的 `findAll()` 或 `find_all()` 傳回的清單中的屬性值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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