我在python中进行网页布局分析。基本任务是以给定HTML源代码的方式编程测量元素的大小,以便我们可以获得网页语料库的内容/广告比率,广告块位置,广告块大小的统计数据。
一种显而易见的方法是使用width / height属性,但它们并不总是可用。此外,需要在加载到DOM后计算width: 50%
之类的内容。所以我想将HTML源代码加载到一个窗口大小预定义的浏览器(如mechanize,虽然我不确定窗口的大小是否可以设置)是一种很好的尝试方法,但机械化不支持无论如何返回元素大小。
在python中有没有通用的方法(没有宽度/高度属性),最好是用一些库?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:0)
要正确获取所有最终尺寸,您需要渲染内容,考虑所有CSS样式表,以及可能所有的javascript。因此,从Python程序中获取大小的唯一方法是在Python中使用完整的Web浏览器实现,使用可以执行此操作的库,或远程引导浏览器进行远程处理。
后一种方法可以使用Selenium工具完成 - 检查如何从Python程序中获取javascript表达式的结果:Can Selenium web driver have access to javascript global variables?