2014-09-11 4 views
0

웹 사이트 (예 : 좋아요, 트위터 공유 등)에서 다양한 메트릭을 검색하기 위해 Python을 사용하고 있습니다. XPath는 텍스트를 정상적으로 검색하지만 이러한 메트릭에는 문제가 있습니다. 스팬).XPath를 사용하여 스팬 클래스 내의 텍스트 가져 오기

<span class="pluginCountTextDisconnected">78</span> 

이제는 "78"을 가져야하지만 Python은 XPath를 피드 할 때 아무 것도 반환하지 않습니다. 여기

는 경우는 XPath의 :

//*[@id="u_0_2"]/span[2] 

파이썬 코드 :

from lxml import html 
import urllib2 
from unicsv import CsvUnicodeReader 

req=urllib2.Request("http://www.nu.nl/binnenland/3866370/reddingsbrigade-redt-369-mensen-zomer-.html") 
tree = html.fromstring(urllib2.urlopen(req).read()) 
fb_likes = tree.xpath('//*[@id="u_0_2"]/span[2]') 
print fb_likes 
+1

78 먼저 파이썬 코드를 표시합니다. – alecxe

+0

alecxe와 (과) 일치합니다. XPath는 잘 작동했지만 파이썬은 그렇지 않았기 때문에 실제로 파이썬 코드를 표시해야합니다. – har07

+0

파이썬 코드가 추가되었습니다. – Zlo

답변

0

는 XPath에 /text()을 추가

//*[@id="u_0_2"]/span[2]/text() 
+0

감사하지만 이미 시도했습니다. 언급하는 것을 잊어 버렸습니다. – Zlo

+0

나머지 xpath는 정확하지 않을 수 있습니다. // * [contains (@class, "pluginCountTextDisconnected")]/text() – chishaku

+0

불행히도 운이 없다, 불행히도 – Zlo

0

귀하의 범위가 iframe에 있으므로 iframe 안에 'iframe'이 있어야 텍스트를 가져올 수 있습니다 (btw, //span[@class='pluginCountTextDisconnected']/text()은 정확함). 그러나 iframe 외부에 있음). 그래서 당신은 src 등을 읽을 필요가 :

a = html.fromstring(urllib2.urlopen("http://www.nu.nl/binnenland/3866370/reddingsbrigade-redt-369-mensen-zomer-.htm").read()) 
iframe = html.fromstring(urllib2.urlopen(a.iframe["src"]).read()) 
fb_likes = iframe .xpath("//span[@class='pluginCountTextDisconnected']/text()") 

죄송합니다, 코드를 테스트하지 않았다, 그냥 일반적인 생각이다.

업데이트

import urllib2, lxml.html 

iframe_asfile = urllib2.urlopen('http://www.facebook.com/plugins/like.php?action=recommend&app_id=&channel=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter%2FZEbdHPQfV3x.js%3Fversion%3D41%23cb%3Df112fd0c7b19666%26domain%3Dwww.nu.nl%26origin%3Dhttp%253A%252F%252Fwww.nu.nl%252Ff62d30922cee5%26relation%3Dparent.parent&href=http%3A%2F%2Fwww.nu.nl%2Fbinnenland%2F3866370%2Freddingsbrigade-redt-369-mensen-zomer-.html&layout=box_count&locale=nl_NL&sdk=joey&send=false&show_faces=true&width=75') 
iframe_data = iframe_asfile.read() 
iframe_asfile.close() 

iframe_html = lxml.html.document_fromstring(iframe_data) 

fb_likes = iframe_html.xpath(".//span[@class='pluginCountTextDisconnected']/text()") 
print fb_likes[0] 

인쇄

+0

고마워,하지만 지금은 나에게 많은 오류 메시지를 준다. 저는 HTML에 익숙하지 않고 절박합니다. 어쩌면 XPath 이외의 파이썬으로 iframe에서 텍스트를 가져 오는 또 다른 방법이 있을까요? – Zlo

+0

@Zlo 또 다른 방법은 URI로 iframe의 src 속성 값을 urllib2로 열고, 내 업데이트 –

+0

@ German Thanks을 참조하십시오. 내가 짜증나게되고있다는 것을 알았지 만, 당신이 기술 한 첫 번째 방법이 나에게 훨씬 더 잘 어울릴 것이다. (나는 수백 개의 기사에서 똑같은 일을해야하고, 모든 기사에서 src 속성을 알아내는 것이 편리하지 않을 것이다.) . 그러나, 코드를 실행할 때 'iframe = html.fromstring (urllib2.urlopen (a.iframe [ "src"]). read())' 'HtmlElement'객체에 'iframe'속성이 없다는 오류가 발생합니다. – Zlo

관련 문제