2017-02-16 58 views
1

我保存在一個XML文件中鳴叫:閱讀CDATA從XML文件BeautifulSoup

<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> 

分析這些,我通過

soup = BeautifulSoup(xml, "lxml") 

其中XML是原始的XML創建BeautifulSoup實例文件。要訪問一個單一的鳴叫我這樣做:

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
soup = bs4.BeautifulSoup(xml, 'xml') 

變化解析器xml

出來:

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

OR html.parser

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

出來:

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

乾杯,解析器之間的主要區別是什麼? –

+1

@Vladimir Vargas不同的解析器在數據類型的某些部分中的行爲不同,在大多數情況下,它們都是相同的。 –

+1

是的,由於時間限制我無法接受它。 –