2014-07-15 5 views
0

R에서 RCurl 및 XML을 사용하여 html 테이블을 구문 분석하는 데 문제가 발생했습니다. readHTMLTable 메서드는 테이블에 대해 길이가 0 인 명명 된 목록을 반환합니다.R을 사용하여 html 테이블 구문 분석을위한 나쁜 케이스

readHTMLTable()은 구문 분석 결과를 HTML 테이블로 인식하지 못하지만 문제는 하나입니다.

library("RCurl") 
library("XML") 

plant<-"APCHC" 
market<-"MED" 
product<-"GAP" 
start_date<-"7.1.2014" 
end_date<-"14.7.2014" 

curl <- getCurlHandle() 

url<-URLencode("http://www.kortes.com/index/nb/index.php") 
headers <- c(
    'Accept' = '*/*', 
    'x-requested-with' = 'XMLHttpRequest', 
    'User-Agent' = 'Mozilla/4.0', 
    'Content-Type' = 'application/x-www-form-urlencoded; charset=UTF-8', 
    'Accept-Encoding' = 'gzip, deflate' 
) 
body<- paste("codex=getForTable&val1=",plant,"&val2=",market,"&val3=",product,"&date1=",start_date,"&date2=",end_date, sep="") 
reader = basicTextGatherer() 
hh = basicHeaderGatherer() 
res = curlPerform(url=url, httpheader= headers, postfields=body,  writefunction=reader$update, headerfunction = hh$update, curl=curl, .encoding="UTF-8") 


kortes<-readHTMLTable(reader$value()) 

>length(kortes) 
>[1] 0 

이 문제를 해결하기 위해 적합한하는 방법을 가르쳐주세요 : 여기

는 R 코드입니다. 감사합니다.

+0

을, 일부 개체는 – EDi

+0

... 누락 다시이 코드를 실행하지 않고 있었다있다 오류 또는 누락 된 개체 ... – Maxim

+0

그래서 문제가 해결됩니까 ??? – EDi

답변

0

reader$value()의 내용은 전체 테이블이 아닌 tr 요소입니다. 시도 :

readHTMLTable(paste0("<table>", reader$value(), "</table>")) 
+0

그것은 작동합니다! 감사! – Maxim

0

당신은 상당히 HTTR 사용하여 당신의 인생을 단순화 할 수 있습니다 : 나는 당신의 예제 코드를 실행할 수 없습니다

library("httr") 
library("XML") 

r <- POST(
    "http://www.kortes.com/index/nb/index.php", 
    body = list(
    val1 = "APCHC", # plant 
    val2 = "MED", # market 
    val3 = "GAP", # product 
    date1 = "7.1.2014", # start date 
    date2 = "14.7.2014" 
) 
) 
stop_for_status(r) 

kortes <- readHTMLTable(content(r, encoding = "UTF-8")) 
length(kortes) 
#> [1] 4