Python中的HTML元素位置
我在用lxml.html这个库在Python中解析一些HTML内容。我想大致估算一下网页中元素的位置,也就是如果在浏览器中渲染后,它们大概会在哪里。这个位置不需要非常精确,但要大致正确。为了简单起见,我会忽略JavaScript对元素位置的影响。最终,我希望能够遍历这些元素(比如通过lxml),找到它们的x/y坐标。有没有什么好的方法可以做到这一点?我不一定要用lxml,也愿意尝试其他的库。
2 个回答
1
正如Sven所说,你需要一个HTML渲染引擎。之前有人问过关于渲染HTML的问题,你可以参考一下那个内容。
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_())