如何在JSOUP中获取显示/可视图像大小(而不是实际图像大小)?

时间:2013-09-14 14:13:04

标签: java html5 web-scraping jsoup

我需要在html页面中获取图像的显示/可视图像尺寸。我正在使用JSOUP。

我可以通过检索图像作为流来获取实际的图像尺寸,但我不需要图像的实际尺寸,而只需要显示尺寸。

无法保证 img标记是否包含高度和宽度html属性,因此我不能依赖getAttribute方法。

如果我能就此得到任何建议,那将会很有帮助。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这是一项非常重要的任务。

要获得适用于任何页面(包括动态添加的内容)的真实图像大小,将使用无头浏览器并在文档完全加载后使用javascript查询显示大小。如果你可以注入jQuery javascript框架,那么jQuery.width() jQuery.height()将分别返回渲染的宽度和高度。执行相同操作的纯JavaScript函数是特定于浏览器的。

假设图像没有动态添加或更改,只需解析就可以了:

  1. html宽度或高度属性直接在html标记上设置,如<img width="150px" height="100px">
  2. css在style属性中设置的宽度或高度,如<img style="width: 150px; height: 100px;">,最后
  3. 解析链接到文档中的所有css文件,并找到css规则,通过id和类<img id="some-image-id" class="some-class">匹配图像标记到一些css规则,看起来像#some-image-id, .some-image-class { width: 150px; height: 100px; }

答案 1 :(得分:1)

JSOUP只会提供HTML中的内容,因此您必须依赖标记中的内容(img标记属性)。 实际大小取决于浏览器如何显示它,它是特定于供应商的。