2

Web サイトの閲覧者から見た画像のサイズを取得したいと考えています。

私は美しいスープを使用しており、次のような画像リンクを取得しています。

links = soup.findAll('img', {"src":True})

画像の寸法を取得する方法は、次を使用することです。

link.has_key('height')
height = link['height']

幅も同様です。ただし、一部のリンクには、これらの属性の 1 つしかありません。PIL を試してみましたが、ダウンロードすると実際の画像サイズが得られます。

Web サイトで見られる画像のサイズを見つける他の方法はありますか?

4

1 に答える 1

14

あなたの主な問題は、高さと幅への参照を html ソースで検索していることです。ほとんどの場合 (適切に処理されている場合)、画像の高さと幅は html で指定されていません。その場合、画像は画像ファイル自体の高さと幅でレンダリングされます。

画像ファイルの高さと幅を取得するには、実際にそのファイルをクエリしてロードし、画像処理を使用して高さと幅を確認する必要があります。ご希望の場合はお知らせください。そのプロセスをお手伝いします。

import urllib, cStringIO
from PIL import Image

# given an object called 'link'

SITE_URL = "http://www.targetsite.com"
URL = SITE_URL + link['src']
# Here's a sample url that works for demo purposes
# URL = "http://therealtomrose.therealrosefamily.com/wp-content/uploads/2012/08/headshot_tight.png"
file = cStringIO.StringIO(urllib.urlopen(URL).read())
im=Image.open(file)
width, height = im.size
if link.has_key('height'):
    height = link['height']  # set height if site modifies it
if link.has_key('width'):
    width = link['width']  # set width if site modifies it

要件: このメソッドには、画像処理用の PIL ライブラリが必要です。

# from command line in a virtual environment
pip install PIL
于 2013-07-25T17:51:21.670 に答える