【发布时间】:2015-10-24 20:43:28
【问题描述】:
我正在从网络上抓取数据。我使用了 readlines() 但现在我必须将其更改为 getURL() 和 htmlTreeParse()。
a <- getURL(URL)
b<-htmlTreeParse(a, encoding = "UTF-8")
问题是 b$children$html$body 为我返回 null。 现在我被困在试图将每一行已解析的 html 转换为向量。
我会感谢每一个想法。
//编辑
我正在尝试从这个网站上抓取
url<-"http://www.registeruz.sk/cruz-public/domain/accountingentity/show/1545622"
当我打印网站的 var b 代码时,该代码看起来可读且一切正常
//编辑2
b$children$html['body']$body
似乎最接近解决方案
为了更清楚,我希望得到与使用 readlines() 后相同的输出。所以每一行 HTML 都是向量的组成部分
//最终编辑
b <- htmlTreeParse(url, useInternalNodes=TRUE)
html<-b["//body"][[1]]
html<-as(html,"character")
vectors<-strsplit(html,"\n")
这似乎产生了相同的结果,谢谢大家的帮助
【问题讨论】:
-
这真的没什么好说的。如果您包含reproducible example 会更好。我猜您的 HTML 页面的结构与您预期的不同,但您没有显示任何内容来确认或否认这一点。
-
请发布更多代码,包括
URL的值,以便我们甚至可以尝试运行它。或者我们应该猜测:) -
试试
b$children$html["body"]。 -
好的,已编辑。但我认为我的问题的解决方案不依赖于站点。或者至少我希望如此,页面应该没问题
-
如果你想要一个字符向量,你可能想要
as(b$children$html[["body"]], "character")。我不确定为什么$body不起作用。另外,您可能需要strsplit()[[1]]"[\t\r\n]+"