2015-06-14 128 views
0

我想从Indeed.com的工作板上的公司名单和工作表。R - Web Scrape的工作板

我使用使用http://www.indeed.com/jobs?q=proprietary+trader&

install.packages("gtools") 
 
install.packages('rvest") 
 
library(rvest) 
 
library(gtools) 
 

 

 

 
mydata = read.csv("setup.csv", header=TRUE) 
 

 
url_base <- "http://www.indeed.com/jobs?q=proprietary+trader&" 
 
names <- mydata$Page 
 

 

 
results<-data.frame() 
 
for (name in names){ 
 
url <-paste0(url_base,name) 
 
title.results <- url %>% 
 
    html() %>% 
 
    html_nodes(".jobtitle") %>% 
 
    html_text() 
 

 
company.results <- url %>% 
 
    html() %>% 
 
    html_nodes(".company") %>% 
 
    html_text() 
 

 

 
results <- smartbind(company.results, title.results) 
 
results3<-data.frame(company=company.results, title=title.results) 
 

 
} 
 

 
new <- results(Company=company, Title=title)

一个URL基地rvest包,然后循环一个contatenation。出于某种原因,它并没有抓住所有的工作,混合公司和工作。

+1

我认为例子将有助于研究这个问题。所以请添加一个工作和一个非工作示例 – Marged

+1

您可以请发布一个代码工作的名称样本? – Metrics

回答

0

这可能是因为您向页面发出两个单独的请求。你应该代码的中间部分更改为:

page <- url %>% 
    html() 

title.results <- page %>% 
    html_nodes(".jobtitle") %>% 
    html_text() 

company.results <- page %>% 
    html_nodes(".company") %>% 
    html_text() 

当我做到这一点,似乎给我10个就业机会和公司,其匹配。你能举一个例子,否则查询网址不起作用?

0

这里是“名称”的一个片段它将基础连接到代码下面的名称,基本上,我将基础http://www.indeed.com/jobs?q=proprietary+trader&添加到名称“start = 10”,“start = 20”...一路“开始= 750”。它实际上运行,但由于某种原因,然后停在“开始= 260”。

下面是我更新的代码。

而且,这里是我得到的错误:

``"Error in data.frame(Company = company.results, Title = title.results) : 
    arguments imply differing number of rows: 10, 11 
In addition: Warning messages: 
1: In retval[[col]][start:end] <- as.vector(vals, mode = mode) : 
    number of items to replace is not a multiple of replacement length 
2: In retval[[col]][start:end] <- as.vector(vals, mode = mode) : 
    number of items to replace is not a multiple of replacement length" 

mydata = read.csv("setup.csv", header=TRUE) 
 

 
url_base <- "http://www.indeed.com/jobs?q=proprietary+trader&" 
 
names <- mydata$Page 
 

 

 
results<-data.frame() 
 
for (name in names){ 
 
url <-paste0(url_base,name) 
 
page <- url %>% 
 
    html() 
 

 
# First find all the urls 
 
company.results <- page %>% 
 
    html_nodes(".company") %>% 
 
    html_text() 
 

 
title.results <- page %>% 
 
    html_nodes(".jobtitle") %>% 
 
    html_text() 
 

 
z <- data.frame(Company=company.results, Title=title.results) 
 
n.rows <- unlist(lapply(z, function(t) dim(t)[1])) 
 

 

 

 
\t 
 
results <- smartbind(results, z) 
 

 

 

 
}

Page 
l 
start=10 
start=20 
start=30 
start=40 
start=50 
start=60 
start=70 
start=80 
start=90 
+0

发生此错误是因为您将company.results和title.results组合在一个data.frame中,并且在start = 260处,这两个行的行数不相同:第一个为10,第二个为11。 – user227710