2013-07-25 2 views
2

웹 사이트의 뷰어에서 본 이미지 크기를 가져오고 싶습니다.이미지 가져 오기 Python의 URL에서

나는 아름다운 수프를 사용하고 있는데이 같은 이미지 링크 수 :

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

내가 이미지 크기를 얻는 방법은 사용하는 것입니다 :뿐만 아니라 폭

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

와 유사합니다. 그러나 일부 링크에는 이러한 속성 중 하나만 있습니다. 필자는 PIL을 시도했지만 다운로드 한 경우 실제 이미지 크기를 제공합니다.

웹 사이트에서 볼 수있는 이미지 크기를 찾는 다른 방법이 있습니까?

답변

13

주요 문제는 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 
+0

실제 이미지 크기를 제공한다고 가정합니다. 나는 사이트에서 어떻게 보이는지에 대한 이미지를 찾고 있습니다. 어떻게 할 수 있는지 알고 있습니까? 감사! – lost9123193

+0

물론, 수동으로 수정 된 차원이있는 사이트에 대한 처리가 추가되었습니다. 대부분의 이미지 크기가 지정되지 않은 사이트, 즉 대부분의 사이트의 경우이 스크립트를 최적화했습니다. –

+0

감사합니다! 이것은 내 코드로 수행 한 작업과 매우 흡사합니다. 그러나 수정 된 이미지로 문제가 발생했지만 키가 하나만 있습니다. 이 문제를 해결할 다른 방법을 알고 있습니까? 감사! – lost9123193