使用 rvest 抓取多个职位列表页面

Using rvest to Scrape Multiple Job Listing pages

我已经阅读了多个其他类似的问题,但似乎找不到能给我正确答案的问题。

我正在尝试抓取 TeamWorkOnline.com 上的所有当前职位。

这是具体的URL:https://www.teamworkonline.com/jobs-in-sports?employment_opportunity_search%5Bexclude_united_states_opportunities%5D=0&commit=Search

我用这段代码开始抓取过程没有问题:

listings <- data.frame(title=character(),
                       stringsAsFactors=FALSE) 
{
  url_ds <- paste0('https://www.teamworkonline.com/jobs-in-sports?employment_opportunity_search%5Bexclude_united_states_opportunities%5D=0&commit=Search',i)
  var <- read_html(url_ds)
  
  #job title
  title <-  var %>% 
    html_nodes('.margin-none') %>%
    html_text() %>%
    str_extract("(\w+.+)+")

  
  listings <- rbind(listings, as.data.frame(cbind(title)))
}

但是,如果您查看该网站,底部有 'numbered navigation' 可以继续转到列出更多职位的其他页面。

我似乎无法弄清楚如何添加正确的代码来让 rvest 自动导航到其他页面并抓取这些作业。

如有任何帮助,我们将不胜感激。

搜索结果中有25页,

https://www.teamworkonline.com/jobs-in-sports?employment_opportunity_search%5Bexclude_united_states_opportunities%5D=0&page=25

当你点击下一个按钮时,url 末尾的数字会根据导航页码而变化,如果上面的代码适用于第一页,那么你需要遍历一个范围1 到 25 并将您的页码附加到 url 并提取它。

希望有用

试试这个:

library(rvest)
library(stringr)

listings <- character()
for (i in 1:25) {
  url_ds <- paste0("https://www.teamworkonline.com/jobs-in-sports?employment_opportunity_search%5Bexclude_united_states_opportunities%5D=0&page=", i)
  #job title
  title <-  read_html(url_ds) %>% 
    html_nodes('.margin-none') %>%
    html_text() %>%
    str_extract("(\w+.+)+")
  listings <- c(listings, title)
}

只需遍历所有页面即可抓取并组合它们。