【问题标题】:htmlTreeParse to vector RhtmlTreeParse 到向量 R
【发布时间】: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]+"

标签: xml r rcurl


【解决方案1】:

这些都应该工作:

url<-"http://www.registeruz.sk/cruz-public/domain/accountingentity/show/1545622"

b <- htmlTreeParse(url)
classs(b)
# [1] "XMLDocumentContent"
b$children$html["body"]

或者:

b <- htmlTreeParse(url, useInternalNodes=TRUE)
class(b)
# [1] "HTMLInternalDocument" "HTMLInternalDocument" "XMLInternalDocument"  "XMLAbstractDocument" 
b["//body"]

在后一个示例中,b 是已解析的 XML 文档,因此可以使用 xPath 进行索引。

【讨论】:

  • 好吧,稍作改动似乎可以工作。我使用 [b"//body"][[1]] 然后将其保存为字符,然后拆分为向量。感谢您的帮助
  • @P.Belai:你能分享一下你是如何将它保存为字符然后分割成向量的吗?谢谢!
猜你喜欢
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2013-02-02
  • 1970-01-01
相关资源
最近更新 更多