R 循环不循环几天

问题描述 投票:0回答:1

我有这段代码应该在“几天”内遍历每个对象。但是,当我运行循环时,它只返回最后一天找到的日期。

days = seq(as.Date("2004-09-21"),as.Date("2004-09-25"),by = 1)

for (i in days){
  
  link = paste0("https://alrai.com/search?date-from=", days[i])
  
  readlink <- read_html(link)
  link_maxpagenumbers_full <- readlink %>%
    html_elements(".roboto-b") %>%
    html_text2()
  link_maxpagenumbers_cut <- str_extract_all(link_maxpagenumbers_full,'\\d{1,3}')
  
readlink <- read_html(link)

article_links <- readlink %>%
  html_elements(".font-700") %>%
  html_attr("href")

link_title <- readlink %>%
  html_elements(".font-700") %>%
  html_text2()

link_date <- readlink %>%
  html_elements(".size-13")%>%
  html_text2()

link_pagesummary <- readlink %>%
  html_elements(".size-14") %>%
  html_text2()
  }

alrai <- data.frame(article_links, link_title, link_date, link_pagesummary)

我真的不确定为什么——我想这应该是每天返回一个链接,每天返回 article_links。

r web-scraping rvest
1个回答
0
投票

你的循环一直都在进行,但是你正在用最后一次迭代覆盖你的对象。

相反,您需要将每次迭代添加到输出对象(我在这里称之为

Out
),然后将您的
data.frame
代码放入循环中并使用
rbind()
附加输出:

Out<-NULL  # initiate empty object
for (i in days){
  
  link = paste0("https://alrai.com/search?date-from=", days[i])
  
  readlink <- read_html(link)
  link_maxpagenumbers_full <- readlink %>%
    html_elements(".roboto-b") %>%
    html_text2()
  link_maxpagenumbers_cut <- str_extract_all(link_maxpagenumbers_full,'\\d{1,3}')
  
readlink <- read_html(link)

article_links <- readlink %>%
  html_elements(".font-700") %>%
  html_attr("href")

link_title <- readlink %>%
  html_elements(".font-700") %>%
  html_text2()

link_date <- readlink %>%
  html_elements(".size-13")%>%
  html_text2()

link_pagesummary <- readlink %>%
  html_elements(".size-14") %>%
  html_text2()
    
alrai <- data.frame(article_links, link_title, link_date, link_pagesummary)  # create a data frame
Out<-rbind(Out,alrai) # add this iterations data to the output
}
© www.soinside.com 2019 - 2024. All rights reserved.