我刚刚编辑了我的问题,使其更加通用: "如果在任何r函数中没有涵盖格式,如何使用r来刮表?"
首先,我应该如何知道格式是否与rvest
等可以提取的函数相匹配?
其次,我们说我尝试了所有可用的抓取功能而且它们都失败了,我该怎么办?自己写一个解析函数?有更简单的方法吗?
如果readHTMLTable
不适用于此实例,除了在大量字符串操作中解析html代码之外,还应该采用哪些其他选项?
答案 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)