如何以编程方式测量元素';使用python的HTML源代码中的大小?
我正在用python做网页布局分析。一项基本任务是在给定HTML源代码的情况下,以编程方式测量元素的大小,以便获得网页语料库的内容/广告比率、广告块位置、广告块大小的统计数据 一种明显的方法是使用宽度/高度属性,但它们并不总是可用。此外,加载到DOM后需要计算如何以编程方式测量元素';使用python的HTML源代码中的大小?,python,html,dom,Python,Html,Dom,我正在用python做网页布局分析。一项基本任务是在给定HTML源代码的情况下,以编程方式测量元素的大小,以便获得网页语料库的内容/广告比率、广告块位置、广告块大小的统计数据 一种明显的方法是使用宽度/高度属性,但它们并不总是可用。此外,加载到DOM后需要计算width:50%。因此,我想将HTML源代码加载到窗口大小预定义的浏览器(例如,尽管我不确定是否可以设置窗口大小)是一种很好的尝试方式,但mechanize无论如何都不支持返回元素大小 在python中有没有通用的方法(没有宽度/高度属性
width:50%
。因此,我想将HTML源代码加载到窗口大小预定义的浏览器(例如,尽管我不确定是否可以设置窗口大小)是一种很好的尝试方式,但mechanize无论如何都不支持返回元素大小
在python中有没有通用的方法(没有宽度/高度属性),最好是使用一些库
谢谢 要正确获得所有最终大小,需要呈现内容,考虑所有CSS样式表,可能还有所有javascript。因此,从Python程序中获取大小的唯一方法是使用Python实现完整的web浏览器,使用可以这样做的库,或者远程引导浏览器关闭进程
后面的方法可以通过使用Selenium工具来完成—请检查如何从Python程序中获得javascript表达式的结果:我建议您看看用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
伙计,我甚至不能让我的元素在IE和Firefox中呈现到相同的大小。如果有一种“官方”的方法来计算尺寸,你可以打赌,一半的市场忽略了这一点,并以他们自己的方式来做。只是给你指出一个方向——可能想看看WebKit和其他渲染器作为输出提供了什么。显然不会得到三叉戟,但WK/壁虎可能足够好了…@Kevin你的担心肯定是正确的。但出于(实证)研究的目的,我会坚持使用任何能够做到这一点的浏览器。我知道在IE和Firefox中,有些元素并没有呈现为相同的大小,我也受到了影响。但这真的有很大的区别吗?我不担心这里的几个像素漂移:)这非常有用。然而,我希望Ghost有一个API文档。