2013-01-09 50 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()") 

相信我也可以通過解決這些問題來提高效率。