7

我正在用python进行网页布局分析。一项基本任务是以编程方式测量给定 HTML 源代码的元素大小,以便我们可以获得网页语料库的内容/广告比率、广告块位置、广告块大小的统计数据。

一个明显的方法是使用宽度/高度属性,但它们并不总是可用的。此外,width: 50%需要在加载到 DOM 后进行计算。所以我猜想将 HTML 源代码加载到 window-size-predefined-browser 中(比如mechanize虽然我不确定是否可以设置窗口的大小)是一个很好的尝试方法,但是 mechanize 不支持返回无论如何元素大小。

是否有任何通用方法(没有宽度/高度属性)在 python 中执行此操作,最好使用一些库?

谢谢!

4

2 回答 2

1

我建议你看看Ghost - 用 python 编写的 webkit web 客户端。它支持 JavaScript,因此您可以轻松调用 JavaScript 函数并获取其返回值。示例显示了如何找出谷歌文本框的宽度:

>>> 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 表达式的结果:Selenium Web 驱动程序可以访问 javascript 全局变量吗?

于 2013-03-27T17:05:34.020 回答