抓取多个 URL 的多个子页面

Scraping multiple sub-pages of multiple URLs

我有一个基数 URL 列表如下:

PostURL
www.abc.com/2315Azxc
www.abc.com/1478Bnbx
www.abc.com/6734Gytr
www.abc.com/8912Jqwe

每个 URL 都有类似

的子页面
www.abc.com/2315Azxc&page=1
www.abc.com/2315Azxc&page=2
www.abc.com/2315Azxc&page=3

我知道使用 rvest 从一个基础 URL 的多个子页面抓取数据如下:

df<- lapply(paste0(' www.abc.com/2315Azxc&page=', 1:3),
                    function(url){
                      url %>% read_html() %>% 
                        html_nodes(".xg_border") %>% 
                        html_text()
                    })

但是需要很多attention/time才能一张一张地刮。我正在寻找可以从 base URLs.

的多个子页面中抓取数据的解决方案

您可以使用 outer 为所有 URL 构建 link :

all_links <- c(t(outer(df$PostURL, paste0('&page=', 1:3), paste0)))
all_links

# [1] "www.abc.com/2315Azxc&page=1" "www.abc.com/2315Azxc&page=2" "www.abc.com/2315Azxc&page=3"
# [4] "www.abc.com/1478Bnbx&page=1" "www.abc.com/1478Bnbx&page=2" "www.abc.com/1478Bnbx&page=3"
# [7] "www.abc.com/6734Gytr&page=1" "www.abc.com/6734Gytr&page=2" "www.abc.com/6734Gytr&page=3"
#[10] "www.abc.com/8912Jqwe&page=1" "www.abc.com/8912Jqwe&page=2" "www.abc.com/8912Jqwe&page=3"

现在您可以使用相同的 lapply 代码抓取每个页面。

数据

df <- structure(list(PostURL = c("www.abc.com/2315Azxc", "www.abc.com/1478Bnbx", 
"www.abc.com/6734Gytr", "www.abc.com/8912Jqwe")), 
class = "data.frame", row.names = c(NA, -4L))