关于CData

https://www.w3school.com.cn/xml/xml_cdata.asp

不要使用 lxml 解析

  1. import bs4
  2. text = '<table><tr name="test"><![CDATA[2019-09-23]]></tr></table>'
  3. soup = bs4.BeautifulSoup(text, 'lxml')
  4. print soup.select_one('table tr').text # None

使用 html.parser 解析

或者使用 lxml-xml 也可以

  1. import bs4
  2. text = '<table><tr name="test"><![CDATA[2019-09-23]]></tr></table>'
  3. soup = bs4.BeautifulSoup(text, 'html.parser')
  4. print soup.select_one('table tr').text # 2019-09-23

其他方式

  1. import bs4
  2. text = '<table><tr name="test"><![CDATA[2019-09-23]]></tr></table>'
  3. soup = bs4.BeautifulSoup(text, 'html.parser')
  4. cd = soup.find(text=True)
  5. type(cd) # <class 'bs4.element.CData'>
  6. isinstance(cd, bs4.CData) # True
  7. str(cd) # '2019-09-23'