抓取多个 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))
我有一个基数 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))