python实现下载指定网址所有图片的方法
本文实例讲述了python实现下载指定网址所有图片的方法。分享给大家供大家参考。具体实现方法如下:
#coding=utf-8
#downloadpicturesoftheurl
#useage:pythondownpicture.pywww.baidu.com
importos
importsys
fromhtml.parserimportHTMLParser
fromurllib.requestimporturlopen
fromurllib.parseimporturlparse
defgetpicname(path):
'''retrivefilenameofurl'''
ifos.path.splitext(path)[1]=='':
returnNone
pr=urlparse(path)
path='http://'+pr[1]+pr[2]
returnos.path.split(path)[1]
defsaveimgto(path,urls):
'''
saveimgofurltolocalpath
'''
ifnotos.path.isdir(path):
print('pathisinvalid')
sys.exit()
else:
forurlinurls:
of=open(os.path.join(path,getpicname(url)),'w+b')
q=urlopen(url)
of.write(q.read())
q.close()
of.close()
classmyhtmlparser(HTMLParser):
'''putallsrcofimgintourls'''
def__init__(self):
HTMLParser.__init__(self)
self.urls=list()
self.num=0
defhandle_starttag(self,tag,attr):
iftag.lower()=='img':
srcs=[u[1]foruinattrifu[0].lower()=='src']
self.urls.extend(srcs)
self.num=self.num+1
if__name__=='__main__':
url=sys.argv[1]
ifnoturl.startswith('http://'):
url='http://'+sys.argv[1]
parseresult=urlparse(url)
domain='http://'+parseresult[1]
q=urlopen(url)
content=q.read().decode('utf-8','ignore')
q.close()
myparser=myhtmlparser()
myparser.feed(content)
foruinmyparser.urls:
if(u.startswith('//')):
myparser.urls[myparser.urls.index(u)]='http:'+u
elifu.startswith('/'):
myparser.urls[myparser.urls.index(u)]=domain+u
saveimgto(r'D:\python\song',myparser.urls)
print('numofdownloadpicturesis{}'.format(myparser.num))
运行结果如下:
numofdownloadpicturesis19
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短