2013-01-09 51 views
1

我正在使用R和xml包来解析存储在html文件中的数据。使用另一个问题(https://stackoverflow.com/a/1849388/1409652)的建议,我正在使用readHTMLTable函数对此进行烹饪。使用R中的xml包提取特定的HTML元素

我有一个问题是,有两个感兴趣的HTML表头。其中一个没有被readHTMLTable拾取,并给出了数据相关单元的一些标识信息(这些信息在所有不同的html文件中有所不同,所以我需要阅读它们而不是仅仅添加默认值)。

我想我需要在html文件中的xml包中指向一个函数,并将其指向我想要的特定行。不幸的是,我不知道哪个功能和我对这个术语的知识不是很好。我已经在下面放了一段HTML代码的样本,但由于它们很敏感,所以没有包含值,我可以交换一些虚拟数据并发布它,如果它有帮助的话。因此,包含“期间”,“音量”,“关税”的标题正常显示,表格正文中的所有数据都正常显示。含“1单元”的标题,“UNIT2等不打算来通过。

<thead> 
<tr> 
<th class="center" colspan="1" rowspan="1"></th><th class="center" onmouseover="javascript:Tip('Unit1');" onmouseout="javascript:UnTip('');" colspan="4" rowspan="1">Unit1</th><th class="center" onmouseover="javascript:Tip('Unit2');" onmouseout="javascript:UnTip('');" colspan="4" rowspan="1">Unit2</th><th class="center" onmouseover="javascript:Tip('Unit3');" onmouseout="javascript:UnTip('');" colspan="4" rowspan="1">Unit3</th><th class="center" onmouseover="javascript:Tip('Others');" onmouseout="javascript:UnTip('');" colspan="4" rowspan="1">Others</th> 
</tr><tr> 
<th class="left" colspan="1" rowspan="1">Period</th><th class="left" colspan="1" rowspan="1">Volume</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Tariff</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Volume</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Tariff</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Volume</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Tariff</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Volume</th><th class="left" colspan="1" rowspan="1">%</th><th class="left" colspan="1" rowspan="1">Tariff</th><th class="left" colspan="1" rowspan="1">%</th> 
</tr> 
</thead> 
<tbody>…all the data…</tbody> 

因此,在总结,没有任何人对如何R中使用XML包,以提取在上述HTML单位信息的任何指针( ?虽然乐于使用其他的包,如果这是最好的方式)

回答

1

所有我需要的是一些学科知识;-)

使用XPath语法我设法使用,以获得单位名称的列表如下:

xpathSApply(doc, "//th[@class='center']/text()") 

相信我也可以通过解决这些问题来提高效率。