使用 XML 库解析未转义的 HTML 并检索标记值

Posted

技术标签:

【中文标题】使用 XML 库解析未转义的 HTML 并检索标记值【英文标题】:Parsing unescaped HTML and retrieving tag values with the XML library 【发布时间】:2014-12-20 00:48:58 【问题描述】:

我正在使用 R 包 XML 来加载和解析 html 页面。我可以使用 XPath 成功导航到我想要的 sn-ps。然而,有问题的 HTML 页面似乎没有使用转义字符。例如,考虑以下 HTML 代码:

<tr>
  <td width=\"50%\"><font size=\"1\" face=\"Arial, Helvetica, sans-serif\">MnO</font></td>
  <td width=\"50%\" align=\"right\"><font size=\"1\" face=\"Arial, Helvetica, sans-serif\">
         <0.05 % <BR>
               </font>
  </td>
</tr>

请注意我们如何使用“"&lt;0.05 %"。当我解析文档时,我得到的只是两个“\r\n”。我现在看到的唯一解决方案是搜索和替换此类子字符串。我试图以各种方式加载文件,看看我们是否可以“反向”转义文档,但没有成功。我还寻找了一些可以考虑此类未转义字符但没有找到的解析选项。

有谁知道以一般方式处理此问题的方法。如果不是,你将如何解决这个问题。

注意:我认为 XML 包使用的是 libxml C 库。

编辑:可以在此处找到示例:

http://rop.ineti.pt/rop/FormProduto.php?idProduto=166

(化学成分见右下表)

【问题讨论】:

能否提供你要解析的页面的URL? 查看我在新编辑中提供的链接。谢谢。 【参考方案1】:

以下内容有帮助吗?我没有使用 gsub() 调用来清理列表,但您可能会发现它们很有帮助。此外,您的语言编码可能与我的不同(英语)。

table <- readHTMLTable("http://rop.ineti.pt/rop/FormProduto.php?idProduto=166", useInternal = TRUE)

# table # table

table[20]

> table[20]
$`NULL`
           Al2O3 14.64 %
1            CaO  0.58 %
2  Fe2O3 (total)  1.44 %
3           H2O+  0.78 %
4           H2O-  0.05 %
5            K2O  4.89 %
6            MgO  0.17 %
7            MnO        
8           Na2O  3.45 %
9           P2O5  0.45 %
10          SiO2 73.23 %
11          TiO2  0.24 %

【讨论】:

如果您查看“MnO”的条目,您会发现它们没有价值。它的值是 ' 如果底层的 HTML 做得奇怪或不正确,那么也许没有“答案”。 Xpath 表达式则达不到要求。不管怎样,我试过了。

以上是关于使用 XML 库解析未转义的 HTML 并检索标记值的主要内容,如果未能解决你的问题,请参考以下文章

python常用模块——xml(未整理完)

JAVA EE - id 标记未在 orm.xml 中解析

JAVA EE-id标记未在orm.xml中解析

使用python如何解析XML?

Python3 XML解析

Python XML解析