刮痧表并不容易

时间:2016-04-05 05:24:35

标签: html r parsing

我刚刚编辑了我的问题,使其更加通用: "如果在任何r函数中没有涵盖格式,如何使用r来刮表?"

首先,我应该如何知道格式是否与rvest等可以提取的函数相匹配?

其次,我们说我尝试了所有可用的抓取功能而且它们都失败了,我该怎么办?自己写一个解析函数?有更简单的方法吗?

如果readHTMLTable不适用于此实例,除了在大量字符串操作中解析html代码之外,还应该采用哪些其他选项?

1 个答案:

答案 0 :(得分:0)

我认为对此的一般回答是“用任何语言刮痧往往是痛苦的”。这是因为人们以随机,蹩脚的格式将内容放在网上,这些格式很难被机器解析。

我没有进行大量的抓取,并且没有比“在页面的源视图中查看,使用反复试验”更好的答案。

看起来这张桌子结构糟糕;如果你试图提取<tr>(表格行),你会得到垃圾......

Weblink <- "http://hmofs.northwestern.edu/hc/crystals.php"
library(rvest)
rr <- read_html(Weblink)
tab2 <- html_nodes(rr,"table")[4]        ## get 4th table
vals <- html_text(html_nodes(tab2,"td")) ## get *all* elements in 4th table

现在只取数字值 - 表格的第7列是下载信息,并以这种方式被丢弃

vals <- suppressWarnings(na.omit(as.numeric(vals)))
matrix(vals,byrow=TRUE,ncol=6)