2015-06-11 5 views
0

Я попытался загрузить изображения с веб-страницы, что мне здесь не хватает?Загрузить фотографии с веб-страницы

import urllib 
    from urllib.request import urlopen, Request 
    import requests 
    from bs4 import BeautifulSoup 
    import os 

urlpage ='https://www.google.com/search?site=imghp&tbm=isch&source=hp&biw=1414&bih=709&q=little+cofee' 
header = {'User-Agent': 'Mozilla/5.0'} 
page = urlopen(Request(urlpage,headers=header)) 
soup = BeautifulSoup(page) 

images = soup.find_all("div", {"class":"thumb-pic"}) 
for image in images: 
    imgUrl = image.a['href'].split("imgurl=")[1] 
    urllib.request.urlretrieve(imgUrl, os.path.basename(imgUrl)) 
+0

В источнике страницы данного URL-адреса нет html-тегов с классом как thumb-pic. –

+0

@Vikas Neha Ojha, что мне делать? –

+0

Попробуйте посмотреть исходный источник страницы и узнать, как отправляются URL-адреса изображений. Откройте это в chrome: - view-source: https: //www.google.com/search? Site = imghp & tbm = isch & source = hp & biw = 1414 & bih = 709 & q = little + cofee –

ответ

1

Это сложно. Иногда они используют короткие URL-адреса, такие как «images/img.jpg», «/images/img.jpg», «../images/img.jpg». Но страница google, которую вы пытаетесь, вообще не содержит тегов html. Он содержит только javascript.

Я сделал быстрый и грязный пример, чтобы показать вам, как он может работать в Python 2.7, но вы можете просто сохранить открытую страницу в своем браузере, и все изображения будут аккуратно сохранены в папке.

#!/usr/bin/python 

import urllib 

url ='http://www.blogto.com/cafes/little-nickys-coffee-toronto' 
ext=['.jpg', '.png', '.gif'] # image type to download 

response= urllib.urlopen(url) 
html = response.read() 

IMGs=[] 
L=html.split('src="') 
for item in L: 
    item=item[:item.find('"')] 
    item=item.strip() 
    if item.find('http') == -1: 
     item=url[:url.find('/', 10)]+item 
    for e in ext: 
     if item.find(e) != -1: 
      if item not in IMGs: 
       IMGs.append(item) 


n=len(IMGs) 
print 'Found', n, 'images' 
i=1 
for img in IMGs: 
    ext=img[img.rfind('.'):] 
    filename='0'*(len(str(n))-len(str(i)))+str(i) 
    i += 1 
    try: 
     print img 
     f = open(filename+ext,'wb') 
     f.write(urllib.urlopen(img).read()) 
     f.close() 
    except: 
     print "Unpredictable error:", img 

print 'Done!' 
Смежные вопросы