2014-08-30 3 views
1

관련 사전을 생성하기 위해 PDF를 긁어내는 코드를 사용하고 있습니다. 내가 즉, 개별적으로 각 텍스트 블록에 액세스 할 때 내 코드가 작동Python XPath 스크래핑에 목록에 텍스트 속성이 없습니다.

x = scraperwiki.pdftoxml(u.read()) 
    r = lxml.etree.fromstring(x) 
    s = r.xpath('//page[@number="142"]/text[@left = "134"]') 
    print s[8].text 

인쇄의 [0], S [1] .. 모두 제대로 작동하지만 난

x = scraperwiki.pdftoxml(u.read()) 
    r = lxml.etree.fromstring(x) 
    s = r.xpath('//page[@number="142"]/text[@left = "134"]') 
    print s[0:8].text 

I 동일한하려고 할 때 이 오류가 발생합니다 : AttributeError : 'list'객체에 'text'속성이 없습니다.

아무도 저에게 잘못을 말해 줄 수 있습니까?

+0

당신은 당신의 XPath 식의 끝에 '/ 텍스트()'추가 할 수 있습니다. – roippi

답변

1

text은 목록이 아닌 각 요소의 속성입니다.

각 요소를 반복하십시오.

x = scraperwiki.pdftoxml(u.read()) 
r = lxml.etree.fromstring(x) 
s = r.xpath('//page[@number="142"]/text[@left = "134"]') 
for elem in s[:8]: 
    print elem.text 

또는 사용 목록 이해 : 당신이 걱정하는 모든 각 노드의 텍스트 인 경우

x = scraperwiki.pdftoxml(u.read()) 
r = lxml.etree.fromstring(x) 
s = r.xpath('//page[@number="142"]/text[@left = "134"]') 
print [elem.text for elem in s[:8]] 
+0

나를 위해 일합니다. 고마워요! – user3766332

관련 문제