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

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

Linda Hamilton
Linda Hamilton原創
2024-11-13 02:14:02982瀏覽

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

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