在python中有什么方法可以在html中找到图像的大小吗?

时间:2017-06-28 11:06:53

标签: python html css image xpath

页面的源代码就是我所拥有的。

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

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

轻松找到大小
document.querySelectorAll("img")[83].height

因为它是一个对象。

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

2 个答案:

答案 0 :(得分: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规则与选择器相关联以得出大小。我认为这会很棘手。

答案 1 :(得分:0)

Python本身并不提供使用样式表,脚本等呈现网页的方法。

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