2017-09-16 42 views
0

我試圖執行下面的代碼,並獲取joblocations執行時的錯誤。頁面加載到ulrs但位置不是從網頁中提取。試圖執行r網絡抓取代碼,但給出了一個錯誤

library(data.table) 
library(XML) 
pages<-c(1:12) 

ulrs <- rbindlist(lapply(pages, function(x) 
    {url <- paste("http://www.r-users.com/jobs/page/",x,"/",sep = " ") 
    data.frame(url)}),fill = TRUE) 


joblocations <- rbindlist(apply(ulrs,1,function(url){ 
    doc1 <- htmlParse(url) 
    locations <- getNodeSet(doc1,'//*[@id="mainContent"]/div[2]/ol/li/dl/dd[3]/span/text()') 
data.frame(sapply(locations,function(x){xmlValue(x)}))  
}),fill = TRUE) 


Error: failed to load external entity "http://www.r-users.com/jobs/page/%201%20/" 

回答

0

首先,改變httphttps將讓你過去的XML是錯誤,但再引出另一個問題:WARNING: XML content does not seem to be XML: 'https://www.r-users.com/jobs/page/1/,仍然不起作用。

我再次嘗試,換用XMLrvest並得到它的工作。

library(data.table) 
library(rvest) 

pages<-c(1:12) 

ulrs <- rbindlist(lapply(pages, function(x) 
{url <- paste0("http://www.r-users.com/jobs/page/",x,"/") 
data.frame(url)} 
),fill = TRUE) 

joblocations <- rbindlist(apply(ulrs,1,function(url){ 
    doc1 <- read_html(url) 
    locations <- html_nodes(doc1,xpath = '//*[@id="mainContent"]/div[2]/ol/li/dl/dd[3]/span/text()') 
    data.frame(sapply(locations,function(x){html_text(x)}))  
})) 

rvest似乎工作是否HTTP或HTTPS指定,但這是什麼,以前我絆倒了。

+0

hello Jul ...仍然出現此錯誤 open.connection錯誤(x,「rb」):HTTP錯誤404. –

+0

剛編輯答案。問題在於'paste'命令的'sep'參數。 'sep =「」'應該可以工作,但是當構建網頁抓取的URL時,最好使用'paste0'代替。 – Jul

+0

非常感謝你..現在工作.... –

相關問題