BeautifulSoupでCDataをぬきぬき
BeautifulSoupでCDataを取り扱うのにちょっと苦労したんでメモ。
text = """<test><![CDATA[some data here]]></test>""" soup = BeautifulSoup(text) print soup.text.string >>>> <![CDATA[some data here]]>
えー、"some data here"が出力されるんじゃないの?
ソースを見ると
class CData(NavigableString): def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING): return "<![CDATA[%s]]>" % NavigableString.__str__(self, encoding)
こんなことになってた。ふむふむ。
こうすればok。
print soup.test.string.encode('utf-8') >>>> some data here