首页 > 解决方案 > 遍历 r 中的 url 列表

问题描述

我想导入一个包含 url 列表的 txt 并从每个中提取并将其保存在 cvs 文件中,但我卡住了

首先,我导入 txt 没问题,但是当我想遍历每一行时,我只是从第一行中提取

library(rvest)
library(tidyr)
library(dplyr)

for(i in seq(list_url)) {
    text <- read_html(list_url$url[i]) %>%html_nodes("tr~ tr+ tr strong") %>%html_text()}

我只是从值形式的第一个 url 中获取结果,我想要从 url 中提取的所有数据框

编辑:list_ url 文件中包含此 url。

http://consultas.pjn.gov.ar/cuantificacion/civil/vida_po_detalle_caso.php?numcas=_b8I7G9olKAukGNlsRE6RHSYaYPu8YLjhTEW15HEuj4http://consultas.pjn.gov.ar/cuantificacion/civil/vida_po_detalle_caso.php?numcas=ewwF4WmHAnOkCg8Y_XIFH705H_O5hJL9uB5hztOhrsEhttp://consultas.pjn.gov.ar/cuantificacion/civil/vida_po_detalle_caso.php?numcas=Z9BDo7ACNDbsUwTiVFTe9aKFfcLAxxnU2AtL6DCloX4http://consultas.pjn.gov.ar/cuantificacion/civil/vida_po_detalle_caso.php?numcas=NZPRa9SoKHVJQcZ64_4zVgcLSNKmHZ4MtorPu23MUPg

标签: rfor-loopwebrvest

解决方案


您确定这是您在text变量中获得的第一个 URL 的结果吗?它应该是最后一个,因为每个循环 for 循环都会覆盖text.

lapply()非常适合这一点,并避免了 for 循环带来的问题。

这可以实现您想要实现的目标:

text <- 
  lapply(list_url$url,
         \(x) read_html(x) %>% 
           html_nodes("tr~ tr+ tr strong") %>% 
           html_text())

使用sapply()相反,您将得到一个向量而不是一个list. 这可能对以下步骤有所帮助。您可能还想查找purrr,它提供了一套*apply()类似的功能。


推荐阅读