2010-12-03 7 views
2

파이썬에서 html 구문 분석을 위해 lxml.html을 사용하고 있습니다. 브라우저에서 렌더링 한 후에 페이지 내의 요소 위치를 대략적으로 추정하고 싶습니다. 정확한 것은 아니지만 일반적으로 정확합니다. 간단히하기 위해 Javascript가 요소 위치에 미치는 영향을 무시합니다. 결과적으로 요소 (예 : lxml을 통해)를 반복하고 해당 x/y 좌표를 찾을 수 있기를 바랍니다. 이 작업을 수행하는 방법에 대한 의견이 있으십니까? lxml에 머무를 필요가 없으며 다른 라이브러리를 사용해 보니 기쁩니다.Python의 html 요소 위치

+3

당신은이 정보를 얻을 수있는 HTML 렌더링 엔진이 필요합니다. 파서가 도움이되지 않습니다. –

+0

또한 CSS의 효과를 고려해야합니다. 요즘에는 콘텐츠가 거의없이 렌더링됩니다. –

답변

5

PyQt는 :

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 

class MyWebView(QWebView): 
    def __init__(self): 
     QWebView.__init__(self) 
     QObject.connect(self,SIGNAL('loadFinished(bool)'),self.showelements) 

    def showelements(self): 
     html=self.page().currentFrame().documentElement() 
     for link in html.findAll('a'): 
      print(link.toInnerXml(),str(link.geometry())[18:]) 


if __name__=='__main__': 
    app = QApplication(sys.argv) 

    web = MyWebView() 
    web.load(QUrl("http://www.google.com")) 
    web.show() 

    sys.exit(app.exec_()) 
+0

환상적입니다. 이 방법을 좀 더 명령 줄 친화적 인, 특히 자체적으로 종료 할 수있는 방법이 있나요? (또는 'url 시퀀스에서 작동합니까?'web.show() '제거하고'sys.exit (0) '쇼 요소의 끝에. – muckabout