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程序设计有所帮助。