R中的Web抓取作业门户

时间:2017-03-29 20:03:32

标签: r web-scraping rvest

我在网上抓一个职位门户网站。即使我更改关键字搜索条件,它也会返回相同的结果。看来我在下面的代码中做错了什么 -

library(rvest)
library(httr)
uastring <- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
session <- html_session("https://freesearch.naukri.com", user_agent(uastring))
form <- html_form(session)[[2]]
form
form <- set_values(form, EZ_KEYWORD_ANY = "SAS")
url <- submit_form(session,form)
sas_indeed <- url

# Get names of candidates
candidate_title <- sas_indeed %>% 
  html_nodes("#titleF") %>%
  html_text()

在EZ_KEYWORD_ANY输入值中,如果您将其从SAS更改为任何关键字,则会返回相同的结果。

1 个答案:

答案 0 :(得分:1)

我不确定rvest是否可以在这个网站上运行 - 我没有很多运气使用rvest这样的“互动”网络抓取。您可以尝试这样的RSelenium解决方案:

library(RSelenium)

#this sets up the phantomjs driver
pjs <- wdman::phantomjs()

#open a connection to it
dr <- rsDriver(browser = 'phantomjs')
remdr <- dr[['client']]

#go to the site
remdr$navigate("https://freesearch.naukri.com")

#enter search term
formObj <- remdr$findElement(using = 'id', value = 'ez_keyword_any')
formObj$sendKeysToElement(list("SAS"))

#submit search
submitObj <- remdr$findElement(using = 'id', value = 'findResumes')
submitObj$clickElement()

#get all names
names <- remdr$findElements(using = 'id', value = 'titleF')

#function to extract names
getName <- function(element){
  return(unlist(element$getElementText()))
}

#apply to all name elements
lapply(names, FUN = getName)

我只在Ubuntu上测试了这个,所以我不确定是否有任何额外的Windows / OS要求来设置RSelenium。如果您使用的是linux,那么这应该是您需要的唯一设置。