0

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

当您在浏览器上执行“检查元素”时,我本质上是在寻找信息,并且您能够看到各种元素的大小。我想在我的 python 代码中访问这个大小。

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

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

4

2 回答 2

1

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

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

于 2013-04-15T10:57:08.567 回答
0

如果你可以调用 shellscript,并且可以使用 Node.js,我假设你也可以安装和使用PhantomJS,它是一个无头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 是否以及如何进行任何缓存,如果这样做,对同一站点的多个抓取重用相同的进程可能是有意义的。

于 2013-04-16T23:48:58.117 回答