2010-12-03 108 views
2

我正在使用lxml.html在Python中的一些HTML解析。我想在瀏覽器呈現頁面之後粗略估計頁面中元素的位置。它不一定是確切的,但通常是正確的。爲了簡單起見,我將忽略Javascript對元素位置的影響。作爲最終結果,我希望能夠迭代元素(例如,通過lxml)並找到它們的x/y座標。有關如何做到這一點的任何想法?我不需要繼續使用lxml,並且很樂意嘗試其他庫。在Python中的HTML元素位置

+3

您將需要一個HTML渲染引擎來獲取這些信息。解析器不會幫助。 – 2010-12-03 11:56:30

+0

您還需要考慮CSS的影響。這些日子裏,沒有它的內容幾乎沒有。 – 2010-12-03 12:05:29

回答

5

PyQt的與WebKit的:

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_())