2015-06-14 120 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