首頁 > 後端開發 > Python教學 > 為什麼像 `find` 和 `select_one` 這樣的 BeautifulSoup 函數會回傳 `None`?

為什麼像 `find` 和 `select_one` 這樣的 BeautifulSoup 函數會回傳 `None`?

Linda Hamilton
發布: 2024-11-13 02:14:02
原創
1039 人瀏覽過

Why do BeautifulSoup functions like `find` and `select_one` return `None`?

為什麼BeautifulSoup 函數有時會傳回None

在BeautifulSoup 中,搜尋單一結果的函數,例如find 和select_one,如果在中找不到符合元素,則返回None HTML。如果後續程式碼嘗試像實際元素一樣使用這些 None 值,這會導致 AttributeError 異常。

None 回傳的範例

考慮以下程式碼片段:

html_doc = "..."
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.sister)
print(soup.find('a', class_='brother'))
print(soup.select_one('a.brother'))
soup.select_one('a.brother').text
登入後複製
  • soup.sister: 回傳None因為沒有
  • soup.find('a', class_='brother'):傳回 None,因為沒有 ;類別屬性為「brother」的標籤。
  • soup.select_one('a.brother'):回傳 None ,原因與 soup.find(...) 相同。
  • soup.select_one('a.brother').text: 引發 AttributeError,因為 None 沒有文字屬性。

如何避免 AttributeError: 'NoneType ' 物件沒有屬性...

為了避免 AttributeError 異常,必須優雅地處理 None 回傳。以下是一些最佳實踐:

  • 在嘗試存取屬性之前,使用條件語句檢查結果是否為 None。
  • 將結果指派給變數並使用 .has_attr() 檢查特定屬性是否存在。
  • 利用 try 和 except 區塊捕捉 AttributeError 異常。

以上是為什麼像 `find` 和 `select_one` 這樣的 BeautifulSoup 函數會回傳 `None`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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