2012-04-28 1 views
1

아래 스크립트를 사용하여 PDF에서 변환 된 HTML 파일에서 데이터를 추출하려고했습니다.XML에서 R을 사용하여 html로 데이터를 긁을 때 "스타일"정보 추출

temp.html <- scan(file=filename,what="character") 
pagetree <- htmlTreeParse(temp.html, error=function(...){}, useInternalNodes = TRUE) 
tx.raw <- getNodeSet(pagetree,"//div") 

tx.raw 목록과 그 중 하나가 다음과 같이 표시됩니다 만들 :

tx[[170]] 

[[170]] 
<div style="position:absolute;top:985;left:748"> 
    <nobr> 
    <span class="ft03"> 




971.72 
</span> 
    </nobr> 
</div> 

내가 필요로하는 정보를 span (예 : 971.72)을 내부에, 그러나 나는 또한 수 있도록 divstyle 필요 나에게 정확하게 그 조각이 데이터 인 곳을 안다 span는 pdf 파일에있다. 스타일 정보도 어떻게 추출 할 수 있습니까? 감사.

답변

0

내가 할 것이라고 간단한 정규 표현식과 : t 텍스트로 해당 HTML 부분을 보유하고

sub('.*style="([0-9a-z;:]*)".*', '\\1', t) 

. 데모의 HTML 부분에 따라


길고 예 :

## loading your demo HTML part to one line 
t <- paste(readLines(textConnection('<div style="position:absolute;top:985;left:748"> 
    <nobr> 
    <span class="ft03"> 




971.72 
</span> 
    </nobr> 
</div>')), collapse = '') 

## let us extract some parts! 
library(XML) 
t.html <- htmlTreeParse(t, useInternalNodes = TRUE) 
t.val <- xpathApply(t.html, '//div', xmlValue) 
t.val <- gsub('\\s', '', t.val) 
t.style <- sub('.*style="([0-9a-z;:]*)".*', '\\1', t) 

이전에 HTML을 구문 분석하는 방법에 따라은 상기 라인의 대부분은 제거 될 수있다 - 물론.

결과 : 내가 예를 들어, 만약 확실하지 않다으로

> t.val 
[1] "971.72" 
> t.style 
[1] "position:absolute;top:985;left:748" 

topleft 추출이 유사하게 해결 될 수있다, 난 그냥 다루지했습니다 lefttop은 정적 문자열입니다.

관련 문제