Python中的HTML元素位置

4 投票
2 回答
2633 浏览
提问于 2025-04-16 07:58

我在用lxml.html这个库在Python中解析一些HTML内容。我想大致估算一下网页中元素的位置,也就是如果在浏览器中渲染后,它们大概会在哪里。这个位置不需要非常精确,但要大致正确。为了简单起见,我会忽略JavaScript对元素位置的影响。最终,我希望能够遍历这些元素(比如通过lxml),找到它们的x/y坐标。有没有什么好的方法可以做到这一点?我不一定要用lxml,也愿意尝试其他的库。

2 个回答

1

正如Sven所说,你需要一个HTML渲染引擎。之前有人问过关于渲染HTML的问题,你可以参考一下那个内容。

用于渲染HTML和JavaScript的Python库

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

撰写回答