我试图从网页下载图片,请问我在这里缺少什么?
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 :(得分:1)
这很棘手。有时候他们会使用简短的网址,例如" images / img.jpg"," / images / img.jpg"," ../ images / img.jpg"。但是你正在尝试的谷歌页面根本没有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!'