7

私はPythonでWebページのレイアウト分析を行っています。基本的なタスクは、HTML ソース コードが与えられた要素のサイズをプログラムで測定することです。これにより、Web ページ コーパスのコンテンツ/広告比率、広告ブロックの位置、広告ブロック サイズの統計データを取得できます。

明白なアプローチは width/height 属性を使用することですが、常に使用できるとは限りません。width: 50%その上、 DOMにロードした後に計算する必要があるようなもの。したがって、HTML ソース コードを window-size-predefined-browser (ウィンドウのサイズを設定できるかどうかはわかりませんが、mechanize のようなもの) にロードすることは良い方法だと思いますが、mechanize は戻り値をサポートしていません。とにかく要素サイズ。

できればいくつかのライブラリを使用して、Pythonでそれを行うための普遍的な方法(幅/高さ属性なし)はありますか?

ありがとう!

4

2 に答える 2

1

Ghost - Python で書かれた webkit Web クライアントをご覧になることをお勧めします。JavaScript をサポートしているため、JavaScript 関数を簡単に呼び出してその戻り値を取得できます。例は、Google テキスト ボックスの幅を調べる方法を示しています。

>>> from ghost import Ghost
>>> ghost = Ghost()
>>> ghost.open('https://google.lt')
>>> width, resources = ghost.evaluate("document.getElementById('gbqfq').offsetWidth;")
>>> width
541.0  # google text box width 541px
于 2013-03-27T21:26:59.043 に答える
0

すべての最終的なサイズを適切に取得するには、すべての CSS スタイル シートと、場合によってはすべての JavaScript を考慮して、コンテンツをレンダリングする必要があります。したがって、Python プログラムからサイズを取得する唯一の方法は、Python で完全な Web ブラウザーを実装するか、それが可能なライブラリを使用するか、ブラウザーをオフプロセスでリモートでパイロットすることです。

後者のアプローチは、Selenium ツールを使用して実行できます。ここで、Python プログラム内から JavaScript 式の結果を取得する方法を確認してください: Can Selenium web driver have access to javascript global variables?

于 2013-03-27T17:05:34.020 に答える