2013-08-19 59 views
5

我使用beautifulsoup4這樣的:如何使用BeautifulSoup4爲xml標籤指定名稱空間?

from bs4 import BeautifulSoup 
xml_string = u"""<something><dcterms:valid><![CDATA[ 

      start=2012-02-24T00:00:00Z 
      end=2030-12-30T00:00:00Z 
      scheme=W3C-DTF]]> 
     </dcterms:valid></something>""" 
soup = BeautifulSoup(xml_string, 'xml') 
soup.find('dcterms:valid') # returns None 
soup.find('valid') # returns the dcterms:valid node 

是否有指定的soup.find(tagname)的命名空間,所以我可以得到準確的什麼,我希望找到一種方式?

回答

0

解析時不需要指定'xml'(編輯:除非在註釋中指出了cdata)。

這裏是代碼的樣件,與未將其指定爲XML是HTML解析器不處理`CDATA`部分使用了相同的XML解析器我

>>> soup = BeautifulSoup(xml_string) 
>>> soup.find('valid') 
>>> soup.find('dcterms:valid') 
<dcterms:valid start="2012-02-24T00:00:00Z" end="2030-12-30T00:00:00Z" scheme="W3C-DTF"></dcterms:valid> 

>>> item = soup.find('dcterms:valid') 
>>> item['start'] 
u'2012-02-24T00:00:00Z' 
+0

工作的問題。不幸的是,這並不能回答我的問題。 – dar

+0

@dar沒有意識到這一點。感謝您指出 – Kalyan02

相關問題