【发布时间】:2019-08-19 03:02:02
【问题描述】:
我有一个包含 100 行 URL 的数据框,我想从中抓取数据。如果我要复制其中一行中的 URL 并将其保存在变量 'url' 中,请执行以下操作:
webpage <- read_html(url, encoding = "windows-874").
一切正常,但如果我要执行一个循环来调用数据框并逐行执行read_html,我会收到一个错误:
"UseMethod("read_xml") 中的错误:没有适用于 'read_xml' 的方法应用于类 "c('tbl_df', 'tbl', 'data.frame')""
我认为这与read_html 无法读取tibbles 的事实有关,但我无法找到解决方案。我尝试将输入read_html的URL的数据类型更改为字符、数字、向量等各种数据类型,但都没有解决问题。
您的帮助将不胜感激。
数据框“URLSetTrade”是从 csv 文件导入的,包含以下格式的数据行:
row1 -> 'https://www.settrade.com/AnalystConsensus/C04_10_stock_saa_p1.jsp?txtSymbol=wha&ssoPageId=9&selectPage=10'
row2 -> 'https://www.settrade.com/AnalystConsensus/C04_10_stock_saa_p1.jsp?txtSymbol=prm&ssoPageId=9&selectPage=10'
etc. etc.
读取网址的功能
getBatchAnalystData <- function(URLRow){
url <- URLSetTrade[URLRow,1]
webpage <- read_html(url, encoding = "windows-874")
target_price_html <- html_nodes(webpage,'td')
target_price_data <- html_text(target_price_html)
sub("-","",target_price_data)
为简单起见省略 AnalystPriceDataFrame
return(analystPriceDataFrame)
}
循环调用读取url函数
for (i in 1:nrow(URLSetTrade)) { assign(paste0(EarningDate2019_07_28_Cleaned[i,1],
"AnalystData"),getBatchAnalystData(i))
}
【问题讨论】:
-
你的 row1 和 row2 是否包含相同的 url?它们应该是不同的网址吗?
-
这两行之间的差异非常小。在第 1 行 -> txtSymbol=wha 和在第 2 行 -> txtSymbol=prm