HTML-положение элемента в Python - PullRequest
2 голосов
/ 03 декабря 2010

Я использую lxml.html для анализа html в python.Я хотел бы получить приблизительную оценку расположения элементов на странице после того, как она будет отображена браузером.Это не должно быть точным, но в целом правильно.Для простоты я буду игнорировать влияние Javascript на местоположение элемента.Как конечный результат, я хотел бы иметь возможность перебирать элементы (например, через lxml) и находить их координаты x / y.Есть мысли о том, как это сделать?Мне не нужно оставаться с lxml, и я счастлив попробовать другие библиотеки.

Ответы [ 2 ]

5 голосов
/ 03 декабря 2010

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_())
0 голосов
/ 03 декабря 2010

Как заявил Свен, вам нужен механизм рендеринга HTML.Ранее задавался вопрос о рендеринге HTML, вы можете обратиться к нему.

Библиотека Python для рендеринга HTML и javascript

...