Python: 如何提取嵌入在HTML文件中的XML?
我有一个包含XML片段的HTML文件,源代码已经放在了pastbin上:
<html>
<head>
<title> test֤</title>
</head>
<body>
<form name="acsForm" action="" method="post" >
<textarea rows=10 cols=80 name="xmlText"><?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
</samlp:Response>
</textarea>
<textarea name="2nd"> text2....</textarea>
</form>
</body>
</html>
我的任务是从HTML中提取第一个textarea
标签里的文本,这个文本是一个XML片段,要求不对原始片段做任何修改。我可以使用BeautifulSoup来获取它,但这样会把所有的标签名都变成小写。
5 个回答
0
(唉!为什么这么多作者觉得<textarea>
里的内容不需要进行HTML转义呢?真是太傻了!)
不幸的是,BeautifulSoup 3.1没有像常见的浏览器那样处理<textarea>
中的<
和&
字符,它没有把这些字符当作文本来处理,而是直接创建了真正的XML元素。
不过,BeautifulSoup 3.0对此处理得还不错。想了解为什么会有这样的区别。
0
我刚试了试beautifulSoup 3.0,结果对我来说不太好用:
xml ='<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"></samlp:Resonse>'
print BeautifulSoup.BeautifulStoneSoup(xml)
<samlp:response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
你会发现,soup把Response改成了response。
1
试试使用BeautifulStoneSoup
这个BeautifulSoup库中的部分,它是专门用来处理XML的。