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 使用自己的字体清单呈现文本。现在网页有不同的字体,Ubuntu/Xvfb 默认不一定有那种字体。因此,所有文本都以 Verdana 字体呈现。

我所做的只是将字体添加到字体目录,并重建字体缓存。

这篇文章有帮助。

将对任何面临此问题的人有所帮助。

于 2014-12-20T13:06:19.810 回答