【问题标题】:Is there any way in python to find size of a image in html?python中有什么方法可以在html中查找图像的大小?
【发布时间】:2017-12-01 17:09:21
【问题描述】:

我只有一个页面的源代码。

tree = etree.HTML(source_page_text)
image_list = tree.xpath('//img[@src]')

通过使用 xpath,我可以找到所有带有 'src' 属性的 'img' 标签,如上所述。但是图像大小的信息在 css 中。在javascript中,我可以通过使用例如轻松找到大小

document.querySelectorAll("img")[83].height

因为它是一个对象。

那么如何在python中找到图片的大小呢?

【问题讨论】:

  • 如果你想从 css 文件中获取信息,你可能需要解析它。或者,如果它符合您的目标,您可以直接下载图像并获取其尺寸。

标签: python html css image xpath


【解决方案1】:

由于您在服务器上而不是在浏览器中,因此您必须(重新)下载图像并使用 PIL 之类的库来获取其大小。

from PIL import Image
import urllib.request
import io

def image_size(url)
    with urllib.request.urlopen(url) as u:
       f = io.BytesIO(u.read())
       img = Image.open(f)
       return img.size # (width, height) tuple

注意:您需要在系统上安装 PIL(pillow fork) 库。

另一种选择是下载样式表并使用tinycss 之类的解析器尝试将css 规则与选择器关联以得出大小。不过我认为这会很棘手。

【讨论】:

    【解决方案2】:

    Python 本身不提供应用样式表、脚本等来呈现网页的方法。

    您可以尝试使用内置 Web 浏览器的 GUI 框架(PyQt、PyGTK),允许在相应的小部件中执行 JS 代码。

    【讨论】:

      猜你喜欢
      • 2022-08-05
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多