簡體   English   中英

navigablestring (HTML) 到底是什么?

[英]What exactly is a navigablestring (HTML)?

我目前正在嘗試使用 Python 2.7 的 BeautifulSoup (bs4) 從網頁中抓取文本。 我的原始代碼如下:

string = ''
a = soup.find('div',attrs={"id":"pressrelease"})
[x.extract() for x in a.findAll('script')]
[x.extract() for x in a.findAll("span", {'class':'hidden'})]
    
for element in a:
     try:
         string += element.get_text()
        
     except Exception as e: print(e)

盡管我的代碼確實為我提供了所需的文本,但它也會出現以下錯誤: 'NavigableString' object has no attribute 'get_text' 我想實現一個功能,如果代碼遇到異常,則保存 URL,但在這種情況下,我不希望保存 URL,因為即使它拋出異常,頁面也已成功抓取。 因此,我試圖更好地了解錯誤究竟是什么(因此我可以決定是否有意忽略這種情況)。

任何關於 navigablestring 是什么以及為什么它會導致我的代碼拋出這樣一個錯誤的解釋都將不勝感激!

NavigableString是 HTML 文檔中的一小段文本。 請參閱文檔 您搜索的標簽內至少有一個項目是一些文本,可能是一些空白。

字符串不能包含文本,它們文本,所以它們沒有get_text方法,因此嘗試調用這樣的方法是錯誤的。

在嘗試對它們調用get_text()之前,您可以檢查每個項目以查看它是否是bs4.element.Tag

for item in a:
     if type(item) is bs4.element.Tag:
         string += item.get_text()

請注意,我將您的迭代變量更改為item因為您將它稱為element的事實可能會讓您認為它實際上是一個 HTML 元素,而至少在一種情況下它絕對不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM