from bs4 import BeautifulSoup
import urllib2
import urllib
import os
url=urllib.urlopen("https://www.google.co.in/search?q=cow&biw=1242&bih=606&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi21oLAqqzKAhXNjo4KHVs0DkgQ_AUIBigB")
soup=BeautifulSoup(url)
li=soup.find_all('a')
for links in li:
imgUrl=links.get('href')
sp1=imgUrl.split('imgurl=')[1]
sp2=sp1.split('&')[0]
urllib.urlretrieve(sp2)
我正在尝试从此网页下载所有图片。我正在下载的链接是Google图片网页的源代码。对于一个图像单独执行代码但是使用find_all
下载多个图像时,它会正常工作,但会出错。
答案 0 :(得分:0)
您的代码中的以下问题需要注意:
1)并非所有imgUrl都包含' imgurl ='
2)并非所有imgUrl都包含& amp; amp;& amp;
3)imgUrl可能无效(例如," javascript:void(0)")
考虑到上述因素,我对您的代码进行了一些更改:
from bs4 import BeautifulSoup
import urllib2
import urllib
import os
url=urllib.urlopen("https://www.google.co.in/search?q=cow&biw=1242&bih=606&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi21oLAqqzKAhXNjo4KHVs0DkgQ_AUIBigB")
soup=BeautifulSoup(url)
li=soup.findAll('a', href=True)
for links in li:
imgUrl=links.get('href')
if 'imgurl=' in imgUrl:
imgUrl=imgUrl.split('imgurl=')[1]
if '&' in imgUrl:
imgUrl=imgUrl.split('&')[0]
try:
urllib.urlretrieve(imgUrl)
except:
continue # invalid imgUrl