【发布时间】:2014-07-04 12:20:22
【问题描述】:
我有一个包含表格的静态 html 文件列表。我需要从该表中提取一个特定列(第 4 列)。我正在使用 R 从 html 中提取表格,但行似乎已为该列合并(似乎 readHTMLTable api 不接受 hrml 中的
标签)。任何帮助将不胜感激
这是我的 R 代码:
library('XML')
table<-readHTMLTable("C:\\Desktop\\TEST\\140.html")
n.rows <- unlist(lapply(table, function(t) dim(t)[1]))
output <- table[[which.max(n.rows)]]
output[,4]
输出:
[1] 214
[2] 321/2/1
[3] 321/5
[4] 353/11/1/1/1
[5] 141/1143/1
[6] 319/3/1
理想的输出应该是
[1] 214
[2] 321/2/1
[3] 321/5
[4] 353/11/1/1/1
[5] 141/1
[6] 143/1
[7] 319/3/1
第 [6] 行刚刚被合并。
html文件示例如下:
<table>
<tr>
<td align="left" valign="top"><font face="Mangal">
1
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
86/2/5
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.036<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
86/2/5<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.036<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
बिहारीलाल किसनलाल जुझारसिंह छगनलाल पिता भागमल<br>जाति रूवाला<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
2
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
214
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.051<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
214<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.051<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
गंगाराम पिता किशना<br>जाति कुमहार<br>पता नि.चोरखेडी<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
3
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
321/2/1
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.063<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
321/2/1<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.063<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
गंगाराम पिता घीसा<br>जाति खाती<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
4
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
321/5
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.063<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
321/5<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.063<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
रामनारायण पिता घीसालाल<br>जाति खाती<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
5
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
353/11/1/1/1
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.127<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
353/11/1/1/1<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.127<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
दुर्गाप्रसाद पिता केलाश<br>जाति चमार<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
6
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
141/1
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.136<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
141/1<br>143/1<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.009<br>0.127<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
जीतमल पिता गोरेलाल<br>जाति रूवाला<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
<tr>
<td align="left" valign="top"><font face="Mangal">
7
</font></td>
<td height="29" align="left" valign="top"><div align="left"><font face="Mangal">
319/3/1
</font> </div></td>
<td align="left" valign="top" bordercolor="#CCCCCC">
0.167<br>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
319/3/1<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
0.167<br>
</font></div></td>
<td align="left" valign="top"> <div align="left"><font face="Mangal">
शिवनारायण पिता लक्ष्मनीरायण<br>जाति खाती<br>पता निवासी ग्राम<br>भूमि स्वामी<br>
</font></div></td>
</tr>
</table>
【问题讨论】:
-
您是否显示正确的输出?我用你的 html 文件运行你的命令并得到以下输出:
> output[,4] [1] 214 321/2/1 321/5 353/11/1/1/1 141/1143/1 [6] 319/3/1 Levels: 141/1143/1 214 319/3/1 321/2/1 321/5 353/11/1/1/1. -
我想我在一开始就错过了额外的数据点......我更正了输出......
标签: html r screen-scraping html-table