使用rvest抓取多个作业列表页面

时间:2020-08-31 15:45:19

标签: r web-scraping rvest

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

我正试图在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)))
}

但是,如果您查看该站点,底部将显示“编号导航”,以继续显示列出更多作业的其他页面。

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试一下:

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)
}

只需循环浏览所有页面即可抓取并合并它们。

答案 1 :(得分:-1)

抱歉,我不知道您使用的是哪种语言,但请尝试按照以下过程进行操作。

搜索结果中有25页,

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

每当您单击下一步按钮时,URL末尾的数字就会根据导航页号而变化,如果以上代码适用于第一页,那么您需要遍历1到25的范围并附加您的页号并提取到网址。

我希望它能起作用