?Tag
? , ?NavigableString
? , ?BeautifulSoup
? 幾乎覆蓋了html和xml中的所有內(nèi)容,但是還有一些特殊對(duì)象.容易讓人擔(dān)心的內(nèi)容是文檔的注釋部分:
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup)
comment = soup.b.string
type(comment)
# <class 'bs4.element.Comment'>
?Comment
? 對(duì)象是一個(gè)特殊類型的 ?NavigableString
? 對(duì)象:
comment
# u'Hey, buddy. Want to buy a used parser'
但是當(dāng)它出現(xiàn)在HTML文檔中時(shí), ?Comment
? 對(duì)象會(huì)使用特殊的格式輸出:
print(soup.b.prettify())
# <b>
# <!--Hey, buddy. Want to buy a used parser?-->
# </b>
Beautiful Soup中定義的其它類型都可能會(huì)出現(xiàn)在XML的文檔中: ?CData
? , ?ProcessingInstruction
? , ?Declaration
? , ?Doctype
? .與 ?Comment
? 對(duì)象類似,這些類都是 ?NavigableString
? 的子類,只是添加了一些額外的方法的字符串獨(dú)享.下面是用CDATA來(lái)替代注釋的例子:
from bs4 import CData
cdata = CData("A CDATA block")
comment.replace_with(cdata)
print(soup.b.prettify())
# <b>
# <![CDATA[A CDATA block]]>
# </b>
更多建議: