【问题标题】:get url table into a `data.frame` R-XML-RCurl将 url 表放入`data.frame` R-XML-RCurl
【发布时间】:2014-09-20 10:00:09
【问题描述】:

我正在尝试将 url 表放入 data.frame。在其他示例中,我发现以下代码有效:

library(XML)
library(RCurl)
theurl <- "https://es.finance.yahoo.com/q/cp?s=BEL20.BR"
tables <- readHTMLTable(theurl)

正如警告所说,该表似乎不是 XML

Warning message: XML content does not seem to be XML: 'https://es.finance.yahoo.com/q/cp?s=BEL20.BR'

或者,getURLContent(theurl, ssl.verifypeer = FALSE, useragent = "R") 可以工作,但不知道如何提取表格。任何帮助将不胜感激。

编辑:感谢@har07 使用table &lt;- readHTMLTable(getURLContent(theurl, ssl.verifypeer = FALSE, useragent = "R"))$ yfncsumtab 提供了输出,但仍需过滤。

【问题讨论】:

  • getURLContent 的结果作为readHTMLTable() 的参数传递?
  • @har07 谢谢,这是一个很好的改进。我可以考虑使用grep 查找标头的索引,然后提取表格,但是有没有一种有效的方法可以将表格直接提取到数据框中?
  • 你真的不应该在 xml/html 内容上使用grep
  • 使用ssl.verifypeer = FALSE 是一个非常糟糕的主意。
  • @AP13 使用 httr 来设置 RCurl 以避免出现问题

标签: xml r web-scraping rcurl


【解决方案1】:

使用getURL获取文档内容即可获取表格。有时readHTMLTable 无法获取内容。在这些情况下,建议尝试getURL

> library(XML)
> library(RCurl)
> URL <- getURL("https://es.finance.yahoo.com/q/cp?s=BEL20.BR")
> rt <- readHTMLTable(URL, header = TRUE)
> rt

您可能需要调整 header 参数和可能的其他参数,但表格在那里。

【讨论】:

  • 感谢您的回答。我正在使用getURLContentsince getURL给我错误Error in function (type, msg, asError = TRUE) : SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
  • 通过将ssl.verifypeer = FALSE 添加到getURLcall 可以解决错误,但得到的结果与使用getURLContent 非常相似。
  • @Richard Scriven 是的,我已经赞成你的回答,因为它有帮助。我仍在试图弄清楚如何仅自动获取表的内容,即带有标题的表:符号、名称等。注意,可以通过选择一个子列表来提取表 manually getURL 的输出并将适当的行设置为子集,因为还有其他内容不属于它。但是,应该有一种方法可以直接获取表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多