R编程:rvest:用于循环覆盖刮取的数据

R编程:rvest:用于循环覆盖刮取的数据,r,loops,rvest,R,Loops,Rvest,以下代码起作用: library(rvest) library(plyr) alaska <- c(1:49) for (i in alaska) { url <- "http://www.50states.com/facts/alaska.htm" nodespath <- paste('//*[@id="content"]/div[1]/div[4]/ol/li[',i,']') alaskafacts <- data.frame(facts

以下代码起作用:

library(rvest)
library(plyr)

alaska <- c(1:49)

for (i in alaska) {

  url <- "http://www.50states.com/facts/alaska.htm"

  nodespath <- paste('//*[@id="content"]/div[1]/div[4]/ol/li[',i,']')

  alaskafacts <-  data.frame(facts =  url %>%   html() %>% 
                  html_nodes(xpath =nodespath) %>%   html_text())

 alaskafacts$nm <- i
 alaskafacts$facts <- alaskafacts$facts

 result <- rbind.fill(result,alaskafacts)
}
库(rvest)
图书馆(plyr)

阿拉斯加您需要在for循环之前预定义results变量。当前,每次循环结果都会被覆盖。试试这个:

library(rvest)
library(plyr)

alaska <- c(1:49)
result<-data.frame()
for (i in alaska) {

  url <- "http://www.50states.com/facts/alaska.htm"
....
库(rvest)
图书馆(plyr)

阿拉斯加您需要在for循环之前预定义results变量。当前,每次循环结果都会被覆盖。试试这个:

library(rvest)
library(plyr)

alaska <- c(1:49)
result<-data.frame()
for (i in alaska) {

  url <- "http://www.50states.com/facts/alaska.htm"
....
库(rvest)
图书馆(plyr)

阿拉斯加运作得很好。你怎么知道我需要的是‘ol.stripedList li’?这是一个查看html代码以识别感兴趣的html代码块的问题。有时会有一些尝试和错误。如果你看一看rvest的vignette,它会解释如何使用“selectorgadget”“简化流程的工具。如果我想运行
状态的所有状态,您是否仍然建议不要使用for循环?在这种情况下,我同意循环最简单。有一些方法可以将呼叫矢量化到所有50个州。加载网页的时间是有时间限制的步骤,因此,仅对50页而言,将网页加载矢量化所节省的时间不值得在可读性方面付出努力或损失。工作非常完美。你怎么知道我需要的是‘ol.stripedList li’?这是一个查看html代码以识别感兴趣的html代码块的问题。有时会有一些尝试和错误。如果你看一看rvest的vignette,它会解释如何使用“selectorgadget”“简化流程的工具。如果我想运行
状态的所有状态,您是否仍然建议不要使用for循环?在这种情况下,我同意循环最简单。有一些方法可以将呼叫矢量化到所有50个州。加载网页的时间是一个时间限制步骤,因此,对于只有50页的网页,将网页加载矢量化所节省的时间不值得付出努力或损失可读性。
library(rvest)

url <- "http://www.50states.com/facts/alaska.htm"
page<-url %>%   read_html()

resultsarray<-html_text(html_nodes(page, "ol.stripedList li"))
  # "ol.stripedList li" is the html code for the list hierarchical 
  # li (list element underneath) an ol (ordered list) of class "stripedList"