我正在使用R包XML来加载和解析HTML页面。我可以使用XPath成功导航到我想要的代码片段。但是,有问题的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%”代替"<0.05 %"
。当我解析文档时,我得到的是两个“\ r \ n”。我现在看到的唯一解决方案是搜索并替换这些子串。我试图以各种方式加载文件,看看我们是否可以“反向”逃避文件,但没有成功。我还寻找了一些解析选项,可以考虑这些未转义的字符,但没有找到任何。
有没有人知道以一般方式处理这个问题的方法。如果没有,你会如何解决这个问题。
注意:我认为XML包使用libxml C库。
编辑:可以在此处找到一个示例:
http://rop.ineti.pt/rop/FormProduto.php?idProduto=166
(见化学成分右下表)
答案 0 :(得分:0)
以下是否有帮助?我没有使用gsub()调用来清理列表,但您可能会发现它们很有帮助。此外,您的语言编码可能与我的不同(英语)。
table <- readHTMLTable("http://rop.ineti.pt/rop/FormProduto.php?idProduto=166", useInternal = TRUE)
#table&lt; - gsub(&#34; ^ [[:alnum:] | [:space:] | [:ascii:]] $&#34;,&#34;&#34;,perl = TRUE,table)#if not alnum,space或ascii,empty string; PUNCT?
#table&lt; - gsub(&#34; [[:punct:]]&#34;,&#34;&#34;,perl = TRUE,table)
#table&lt; - gsub(&#34; \ n | \ t | \ r&#34;,&#34;&#34;,perl = TRUE,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 %