使用BeautifulSoup从XML文件中读取CDATA

时间:2017-02-16 02:11:09

标签: xml python-3.x beautifulsoup

我将推文保存在XML文件中:

<tweet>
  <tweetid>142389495503925248</tweetid>
  <user>ccifuentes</user>
  <content><![CDATA[Salgo de #VeoTV , que día más largoooooo...]]></content>
  <date>2011-12-02T00:47:55</date>
  <lang>es</lang>
  <sentiments>
   <polarity><value>NONE</value><type>AGREEMENT</type></polarity>
  </sentiments>
  <topics>
   <topic>otros</topic>
  </topics>
 </tweet>

要解析这些,我通过

创建了一个BeautifulSoup实例
soup = BeautifulSoup(xml, "lxml")

其中xml是原始XML文件。要访问一条推文,我就这样做了:

tweets = soup.find_all('tweet')
for tw in tweets:
    print(tw)
    break

这导致

<tweet>
<tweetid>142389495503925248</tweetid>
<user>ccifuentes</user>
<content></content>
<date>2011-12-02T00:47:55</date>
<lang>es</lang>
<sentiments>
<polarity><value>NONE</value><type>AGREEMENT</type></polarity>
</sentiments>
<topics>
<topic>otros</topic>
</topics>
</tweet>

请注意,我打印第一条推文时省略了CDATA部分。得到它对我很重要,我该怎么做?

1 个答案:

答案 0 :(得分:1)

soup = bs4.BeautifulSoup(xml, 'xml')

将解析器更改为xml

出:

<content>Salgo de #VeoTV , que día más largoooooo...</content>

html.parser

soup = bs4.BeautifulSoup(xml, 'html.parser')

出:

<content><![CDATA[Salgo de #VeoTV , que día más largoooooo...]]></content>