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

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

DDD
發布: 2024-12-08 02:40:12
原創
383 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板