如何使用循环来抓取 R 中多个网页的网站数据?

2023-11-29

我想应用一个循环来从 R 中的多个网页中抓取数据。我能够抓取一个网页的数据,但是当我尝试对多个页面使用循环时,我收到了一个令人沮丧的错误。我花了几个小时修修补补,但无济于事。任何帮助将不胜感激!!!

这有效:

###########################
# GET COUNTRY DATA
###########################

library("rvest")

site <- paste("http://www.countryreports.org/country/","Norway",".htm", sep="")
site <- html(site)

stats<-
    data.frame(names =site %>% html_nodes(xpath="//*/td[1]") %>% html_text() ,
         facts =site %>% html_nodes(xpath="//*/td[2]") %>% html_text() ,
         stringsAsFactors=FALSE)

stats$country <- "Norway"
stats$names   <- gsub('[\r\n\t]', '', stats$names)
stats$facts   <- gsub('[\r\n\t]', '', stats$facts)
View(stats)

但是,当我尝试在循环中编写此内容时,我收到错误

###########################
# ATTEMPT IN A LOOP
###########################

country<-c("Norway","Sweden","Finland","France","Greece","Italy","Spain")

for(i in country){

site <- paste("http://www.countryreports.org/country/",country,".htm", sep="")
site <- html(site)

stats<-
data.frame(names =site %>% html_nodes(xpath="//*/td[1]") %>% html_text() ,
         facts =site %>% html_nodes(xpath="//*/td[2]") %>% html_text() ,
       stringsAsFactors=FALSE)

stats$country <- country
stats$names   <- gsub('[\r\n\t]', '', stats$names)
stats$facts   <- gsub('[\r\n\t]', '', stats$facts)

stats<-rbind(stats,stats)
stats<-stats[!duplicated(stats),]
}

Error:

Error: length(url) == 1 is not TRUE
In addition: Warning message:
In if (grepl("^http", x)) { :
  the condition has length > 1 and only the first element will be used

最终工作代码:

###########################
# THIS WORKS!!!!
###########################

country<-c("Norway","Sweden","Finland","France","Greece","Italy","Spain")

for(i in country){

site <- paste("http://www.countryreports.org/country/",i,".htm", sep="")
site <- html(site)

stats<-
data.frame(names =site %>% html_nodes(xpath="//*/td[1]") %>% html_text() ,
     facts =site %>% html_nodes(xpath="//*/td[2]") %>% html_text() ,
       stringsAsFactors=FALSE)

stats$nm <- i
stats$names   <- gsub('[\r\n\t]', '', stats$names)
stats$facts   <- gsub('[\r\n\t]', '', stats$facts)
#stats<-stats[!duplicated(stats),]
all<-rbind(all,stats)

}
 View(all)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用循环来抓取 R 中多个网页的网站数据? 的相关文章

随机推荐

  • Android gradle 3.0.0 - ZLIB 输入流意外结束

    将 android studio 更新到 3 0 并切换到gradle plugin 3 0 0我收到此错误 Gradle project refresh failed Error Unexpected end of ZLIB input
  • 张量流中的加权成本函数

    我试图将权重引入以下成本函数 cost tf reduce mean tf nn sparse softmax cross entropy with logits logits logits labels y 但不必自己做 softmax
  • fork()在for循环中执行

    int main int argc char argv int i 0 while i lt 2 fork system ps o pid ppid comm stat i return EXIT SUCCESS 谁能告诉我 ps 命令执行
  • Visual Studio 2012 上的 mySQL 数据源

    我一直在阅读有关 mySQL 数据源以及将 mySQL 与实体框架结合使用的能力 但如果不使用数据源对话框 我无法真正使用 mySQL 生成 EF 如何将 mySQL 数据库添加到此类对话框 这是我到目前为止所做的 已安装mySQL 连接器
  • 用于传递块的 Ruby 语法 [重复]

    这个问题在这里已经有答案了 为什么带大括号的语法按预期工作 class SomeClass include Parser Http new agent PASSED This block was passed to Http new end
  • 如何使用mockito verify()验证一个方法被调用两次

    我想通过mockito verify验证一个方法是否至少被调用一次 我使用了验证 它抱怨如下 org mockito exceptions verification TooManyActualInvocations Wanted 1 tim
  • 如何测试 IPC::Run3 的退出状态

    我正在尝试测试 Perl 模块 IPC Run3 但难以检查命令是否失败或成功 我知道如果 IPC Run3 的参数有问题 它会发出退出代码 但是如果参数没问题但命令不存在怎么办 我如何测试以下示例 有一个子程序来调用 Run3 sub r
  • 转换为 PHP REST CURL POST

    我们如何将此代码转换为 PHP REST CURL POST POST https apis live net v5 0 me skydrive files access token ACCESS TOKEN Content Type mu
  • 如何在 mac os x 10.7.2 Lion 上安装 PIL

    我尝试过谷歌搜索并查找其他人的问题 但是 我仍然找不到在 mac os x 10 7 2 Lion 上安装 PIL 适用于 python 2 6 或 2 7 的清晰 简单的方法 如果你使用homebrew 您只需安装 PILbrew ins
  • gnuplot 条形图上的 Y 值?

    我可以让 gnuplot 在其条形上显示数据点的精确 y 值或高度 使用 带框 绘制 吗 我希望该图易于阅读 这样就无需将条形顶部与 y 轴对齐并猜测该值是多少 您可以使用标签样式并将其与框样式结合到绘图命令中 标签样式需要 3 列数据 x
  • Oracle 中的 DATEDIFF 函数 [重复]

    这个问题在这里已经有答案了 我需要使用 Oracle 但 DATEDIFF 函数在 Oracle DB 中不起作用 在Oracle中如何编写以下代码 我看到一些使用 INTERVAL 或 TRUNC 的示例 SELECT DATEDIFF
  • 如何在张量流中使用预训练模型作为不可训练子网络?

    我想训练一个包含子网络的网络 我需要在训练期间保持修复 基本思想是在预训练网络 inceptionV3 中添加一些层 new layers gt pre trained and fixed sub net inceptionv3 gt ne
  • 根据第二个数组过滤 numpy 数组中的行

    我有 2 个 2d numpy 数组 A 和 B 我想删除 A 中出现在 B 中的所有行 我尝试过这样的事情 A np isin A B 但 isin 保留 A 的维度 我需要每行一个布尔值来过滤它 编辑 像这样的东西 A np array
  • Vue 模板或渲染函数尚未定义,我两者都没有使用?

    这是我的主要 JavaScript 文件 import Vue from vue new Vue el app 我的 HTML 文件 div div 使用运行时构建的 Vue js 的 Webpack 配置 alias vue vue di
  • 通过计时器在 JDialog 中设置动态 JLabel 文本

    我正在尝试制作一个 JDialog 它将在 JLabel 上向用户显示动态消息 该消息应该是从 1 到 10 的计数 并且应该每秒更改一个数字 问题是 当我调试它时 它在 dia setVisible true 之后立即停止 除非我关闭 J
  • 在 R 中提取日期

    我在 R 中处理日期方面遇到了很大的困难 而在 SPSS 中可以很轻松地做到这一点 但我很乐意留在 R 中完成我的项目 我的数据框中有一个日期列 想要完全删除年份以保留月份和日期 这是我的原始数据的峰值 gt head ds date 1
  • 在不改变宽度的情况下减少条之间的间距

    我正在创建一个像这样的条形图 gender M F numbers males females bars plt bar gender numbers width 0 1 bottom None align center data None
  • 合并具有公共元素和多个数据点的数组

    我正在尝试使用直接的 Javascript 将两个 Javascript 数组合并为一个数组 我正在努力准确地完成以下两个问题中所提出的问题 然而 我的数据有几个点需要合并 而不是单个项目 并且数组之间有一个完全相同的公共元素 以下是其他问
  • 匹配 Swift 中对象的数据类型

    Swift 中如何匹配对象的数据类型 Like var xyz Any xyz 1 switch xyz case let x where xyz as AnyObject println x is AnyObject Type case
  • 如何使用循环来抓取 R 中多个网页的网站数据?

    我想应用一个循环来从 R 中的多个网页中抓取数据 我能够抓取一个网页的数据 但是当我尝试对多个页面使用循环时 我收到了一个令人沮丧的错误 我花了几个小时修修补补 但无济于事 任何帮助将不胜感激 这有效 GET COUNTRY DATA li