2013-08-19 28 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がない限り)。ここで

が私のために

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

を働いていたコードのサンプル片であるXMLとしてそれを指定しないとの問題は、HTMLパーサがXMLパーサーと同じ 'CDATA'のセクションを処理しないということです。残念ながら、これは私の質問に答えません。 – dar

+0

@darそれを知らなかった。指摘してくれてありがとう – Kalyan02

関連する問題