2016-04-13 22 views
0

見て、この例ではHTMLエンティティを削除します。BeautifulSoup(BS4)XMLパーサーは

# xml parser 
bs4.BeautifulSoup('<price>&pound;4</price>', 'xml') 

# prints: 
<?xml version="1.0" encoding="utf-8"?> 
<price>4</price> 
# html (lxml) parser 
bs4.BeautifulSoup('<span>&pound;4</span>', 'lxml') 

# prints: 
<html><body><span>£4</span></body></html> 

お知らせ£看板。なぜXMLパーサーがそれを削除するのですか?それを出力に持たせるにはどうすればよいですか?ドキュメントにはlxmlパーサー(たとえば<link>)によって間違って解析されたペアのタグが含まれているため、xmlの解析が必要です。

+0

xmlパーサーを使用する必要がありますか? –

答えて

0

&pound;は標準のXMLエンティティではありません。代わりに&#163;などを使用してください。 &pound;はHTMLエンティティであり、DTDに宣言(または埋め込み)することなく使用することはできません。

編集:たとえば、How do I define HTML entity references inside a valid XML document?

+0

こんにちは、返信ありがとうございます。あなたは正しいかもしれませんが、 'BS'はそれを正しく解釈しません。' bs4.BeautifulSoup( '<!DOCTYPE item [<!ENTITY pound "£">> '、 'xml') 'prints' <? > 012> DOCTYPE item> – uiii

+0

..代わりに入力に「£」を使用するか、入力HTMLを何らかの方法でマッサージすることはできますか?xml version = "1.0" encoding = "utf- – Trondster