Python: 如何提取嵌入在HTML文件中的XML?

0 投票
5 回答
732 浏览
提问于 2025-04-15 22:03

我有一个包含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的。

撰写回答