2013-08-19 19 views
5

Tôi đang sử dụng beautifulsoup4 như thế này:Làm cách nào để chỉ định không gian tên cho thẻ xml với BeautifulSoup4?

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 

Có cách nào để xác định không gian tên trong soup.find(tagname) vì vậy tôi có thể được chính xác về những gì tôi đang tìm kiếm để tìm?

Trả lời

0

Bạn không cần chỉ định 'xml' trong khi phân tích cú pháp (Chỉnh sửa: trừ khi có cdata như được chỉ dẫn trong nhận xét).

Đây là mảnh mẫu mã mà làm việc cho tôi

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

Vấn đề với không xác định nó như là xml là phân tích cú pháp html không xử lý 'phần CDATA' giống như các phân tích cú pháp xml. Thật không may điều này không trả lời câu hỏi của tôi. – dar

+0

@dar Không nhận ra điều đó. Cảm ơn bạn đã chỉ ra – Kalyan02

Các vấn đề liên quan