如何确定在像素给定的html文件的html表的大小



我有一个html文件,其中有各种html标签。这个html也有一堆表在它。我正在使用python处理这个文件。当浏览器(最好是chrome或firefox)渲染时,我如何找出大小(以像素为单位的长度x宽度)?

我基本上是在寻找当你在浏览器上做"检查元素"时的信息,你可以看到各种元素的大小。我想在我的python代码中访问这个大小。

我使用lxml来解析我的html,如果需要的话可以使用selenium。

编辑:添加了#node.js,以防我可以使用它在shell脚本中吐出所有表的大小,我可以在python中抓取它。

您将希望使用Selenium WebDriver在运行Python代码的计算机上安装的实际浏览器中打开HTML文件。

我不确定如何使用Selenium WebDriver API来找出渲染表的高度,但value_of_css_property方法可能会做到这一点。

如果你可以调用shellscript, 你可以使用Node.js,我假设你也可以安装和使用PhantomJS,这是一个headless WebKit端口。(即一个真正诚实的WebKit渲染器,只是不需要一个窗口来工作。)这将允许您使用Javascript和熟悉的web库来操作文档。作为一个例子,下面的代码为您设置了Stack Overflow站点左上角的标志元素的宽度:

page = require('webpage').create(); // create a new "browser"
page.open('http://stackoverflow.com/', function() {
  // callback when loading completes
  var logoWidth = page.evaluate(function() {
    // This runs in the rendered page and uses the version of jQuery that SO loads.
    return $('#hlogo').width();
  });
  console.log(logoWidth); // prints 250, the same as Chrome.
  phantom.exit(); // for some reason you need to exit manually
});

PhantomJS的文档会告诉你更多关于你可以用它做什么以及如何做。

不过需要注意的是,加载页面需要一段时间,因为它需要获取CSS和脚本,并且通常做浏览器所做的一切。我不确定PhantomJS是否以及如何做任何缓存,如果它做了,它可能是有意义的重用相同的过程对同一站点的多个刮痧。

最新更新