2010-12-03 16 views
2

私はpythonの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

0

Svenが述べたように、HTMLレンダリングエンジンが必要です。以前にHTMLのレンダリングに関する質問がありましたが、それを参照することができます。 WebKitのと

Python library for rendering HTML and javascript

関連する問題