0

Selenium と chromedriver を pyvirtualdisplay で使用して、Ubuntu サーバー (AWS-EC2) で HTML ページをレンダリングしようとしています。HTML ページが Windows PC で表示されるように表示されません。Webdriver から取得したスクリーンショットを添付します。


Windows PC でレンダリングされた画像

これは、**Windows** によってレンダリングされた HTML のスナップショットです。

pyvirtualdisplay を使用して Ubuntu サーバーでレンダリングされた画像

これは **Ubuntu** によってレンダリングされた HTML のスナップショットです


私のpythonコードの実行中に行われた基本的な構成(pythonコードのスニペット)-

display_width=1366
display_height=768

解像度は私の Windows PC と同じです。

UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"

これは標準のユーザー エージェントです。

def create_driver(executable_path,extension_path):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--user-agent='+UserAgent)
    driver = webdriver.Chrome(executable_path=executable_path,     chrome_options=chrome_options)
    driver.set_window_size(display_width,display_height
    driver.delete_all_cookies()
    return driver

このコードはドライバーを作成します

display = Display(visible=0, size=(display_width, display_height))
display.start()
driver = create_driver(executable_path,extension_path)
input_html_file='SAMPLE'
driver.get('file://///var/tmp/' + input_html_file)

ドライバーで開いた保存済みの HTML ファイルがあります。これは SAMPLE です。

Windows で開いたのと同じ HTML です。スクリーンショットの画像でわかるように、「91 の販売者レビュー」というテキストが新しい行に折り返されます。このブロックと他の領域の高さの計算に取り組んでいるため、結果に影響します。

コードはWindowsでは魅力のように機能し、正しい結果(高さ)を提供しますが、Ubuntuではレンダリング自体が正しくないため、結果も正しくありません。

これは私がこれまでに試したことです-

  1. ディスプレイの解像度を変更します。動作しませんでした。どのディスプレイ サイズでも、スクリーンショットは同じように見えます。
  2. フォント、フォントサイズなどの変更は機能しませんでした。HTML のブロックごとに CSS が異なるため、首が痛いです。
  3. ブラウザ変更。FirefoxでもChromeでも機能しませんでした

アイデアが不足しています。誰かがアイデアや経験、またはこの問題の解決策を共有してくれると非常に助かります。

グラフィックスドライバーの問題である可能性があることを理解しています.Windowsには問題がありますが、Ubuntuサーバーにはありません。

助けてください。ありがとう、期待して。

編集:画像の説明。

4

2 に答える 2

1

AWS インスタンスがディスプレイの幅と高さの割り当てに応答していない可能性があります。実際の画面サイズのデバッグを行います。おっしゃるとおり、期待していたものとは違うかもしれません。

于 2014-11-27T01:14:40.677 に答える
0

私は実際にこれに対する解決策を理解することができました。

どうやら、Xvfb は独自のフォント インベントリを使用してテキストをレンダリングします。現在、Web ページにはさまざまなフォントがあり、Ubuntu/Xvfb にはデフォルトでそのフォントが含まれているとは限りません。したがって、すべてのテキストは Verdana フォントでレンダリングされます。

私がしたことは、フォントのディレクトリにフォントを追加し、フォント キャッシュを再構築することだけでした。

この投稿は役に立ちました。

この問題に直面しているすべての人に役立ちます。

于 2014-12-20T13:06:19.810 に答える