从baidu下载图片的脚本[转]
时间:2006-06-19 来源:bleem1998
CU某人写的
试了一下可以用
收藏先以后再研究
:)
真的真的好久没写程序了。。。。。。
试了一下可以用
收藏先以后再研究
:)
真的真的好久没写程序了。。。。。。
#!/usr/bin/env python
import os,sys,urllib
doc="""-----------------------------------图片下载----------------------"""
print doc
findstr=raw_input("请输入您想下载的图片关键字,例如 美女:")
if findstr=="":
sys.exit()
imgsum=raw_input("请输入您想下载的最大图片数量:")
if imgsum=="":
imgsum=10
else:
imgsum=int(imgsum)
dir=raw_input("请输入您想要存放图片的目录:")
if dir=="":
sys.exit()
else:
new_dir=""
if dir.endswith("/"):
for i in range(len(dir)-1):
new_dir=new_dir+dir[i]
dir=new_dir
def baidu(imgsum,findstr):
gbstr=("找到相关图片约".decode("utf8")).encode("gb2312")
gbstr2=("找到相关图片".decode("utf8")).encode("gb2312")
gbstr3=("张".decode("utf8").encode("gb2312"))
if findstr=="":
return 0
findstr=findstr.decode("utf8")
findstr=urllib.quote(findstr.encode('gb2312'))
url="http://image.baidu.com/i?z=3&cl=2&ct=201326592&sn=&lm=-1&cm=1&sc=0&bu=&rn=16&tn=baiduimage&word=%s&pn="%findstr
print url
webfile=urllib.urlopen(url+"0").read()
start=webfile.find(gbstr)
if start==-1:
start=webfile.find(gbstr2)
start=start+12
else:
start=start+14
end=webfile.find(gbstr3,start)
sum=webfile[start:end]
sum=sum.replace(",","")
sum=int(sum) #总图片数
sumpage=sum/16+1 #总页数
print "找到了%d张图片"%sum
i=0 #下载的图片数
for page in range(sumpage):
p_url=url+"%s"%(page*16) #当前页url
webfile=urllib.urlopen(p_url).read()
i_start=0
i_end=0
while True:
i_start=webfile.find("i?ct",i_end)
if i_start<0:
break
i_start=i_start-23
i_end=webfile.find("\"",i_start)
i_url=webfile[i_start:i_end] #找到一个img页面的路径
webstr=urllib.urlopen(i_url).read()
start=0
end=0
while True:
start=webstr.find("img src=\"",end)
if start<0:
break
start=start+9
end=webstr.find("\"",start)
imgurl=webstr[start:end]
if imgurl.find("img-jg.gif")!=-1:
continue
i=i+1
print "正在下载第%d张图片"%i
try:
data=urllib.urlopen(imgurl).read()
except:
print "丢失一张图片"
break
f=open("%s/%d"%(dir,i),"w")
f.write(data)
f.close()
if i==imgsum:
print "已经按您的要求,下载了%d张图片,下载完毕"%i
return 1
baidu(imgsum,findstr)
import os,sys,urllib
doc="""-----------------------------------图片下载----------------------"""
print doc
findstr=raw_input("请输入您想下载的图片关键字,例如 美女:")
if findstr=="":
sys.exit()
imgsum=raw_input("请输入您想下载的最大图片数量:")
if imgsum=="":
imgsum=10
else:
imgsum=int(imgsum)
dir=raw_input("请输入您想要存放图片的目录:")
if dir=="":
sys.exit()
else:
new_dir=""
if dir.endswith("/"):
for i in range(len(dir)-1):
new_dir=new_dir+dir[i]
dir=new_dir
def baidu(imgsum,findstr):
gbstr=("找到相关图片约".decode("utf8")).encode("gb2312")
gbstr2=("找到相关图片".decode("utf8")).encode("gb2312")
gbstr3=("张".decode("utf8").encode("gb2312"))
if findstr=="":
return 0
findstr=findstr.decode("utf8")
findstr=urllib.quote(findstr.encode('gb2312'))
url="http://image.baidu.com/i?z=3&cl=2&ct=201326592&sn=&lm=-1&cm=1&sc=0&bu=&rn=16&tn=baiduimage&word=%s&pn="%findstr
print url
webfile=urllib.urlopen(url+"0").read()
start=webfile.find(gbstr)
if start==-1:
start=webfile.find(gbstr2)
start=start+12
else:
start=start+14
end=webfile.find(gbstr3,start)
sum=webfile[start:end]
sum=sum.replace(",","")
sum=int(sum) #总图片数
sumpage=sum/16+1 #总页数
print "找到了%d张图片"%sum
i=0 #下载的图片数
for page in range(sumpage):
p_url=url+"%s"%(page*16) #当前页url
webfile=urllib.urlopen(p_url).read()
i_start=0
i_end=0
while True:
i_start=webfile.find("i?ct",i_end)
if i_start<0:
break
i_start=i_start-23
i_end=webfile.find("\"",i_start)
i_url=webfile[i_start:i_end] #找到一个img页面的路径
webstr=urllib.urlopen(i_url).read()
start=0
end=0
while True:
start=webstr.find("img src=\"",end)
if start<0:
break
start=start+9
end=webstr.find("\"",start)
imgurl=webstr[start:end]
if imgurl.find("img-jg.gif")!=-1:
continue
i=i+1
print "正在下载第%d张图片"%i
try:
data=urllib.urlopen(imgurl).read()
except:
print "丢失一张图片"
break
f=open("%s/%d"%(dir,i),"w")
f.write(data)
f.close()
if i==imgsum:
print "已经按您的要求,下载了%d张图片,下载完毕"%i
return 1
baidu(imgsum,findstr)
相关阅读 更多 +