python根据url下载大量图片,python网页上传文件
【实例简介】
【实例截图】
【核心代码】
导入请求
从什么是导入诡异又阴森的树形灯
进口是
导入操作系统
从多处理。假的导入池作为线程池
def gethtml(url,encode): #获取网页源码
r=requests.get(url)
编码=编码
回复短信
定义过滤器名称(名字):#文件名过滤特殊字符
rstr=r[\/\\\:\*\?\\\]
new_name=re.sub(rstr, _ ,FName)
返回新名称
def mkdir(路径):#创建文件夹
path=path.strip()
isExists=os.path.exists(path)
如果不存在:
os.makedirs(路径)
def geturl(url): #获取网站各个分类链接、分类名称
html=gethtml(url, utf-8 )
ehtml=etree .HTML(html)
nurl=ehtml.xpath(//*[@id=陈星_菜单]/li/a/@href )
ntitle=ehtml.xpath(//*[@id=陈星_菜单]/li/a/text())
urldata=[]
对于范围内的I(1,len(nurl)-1):
URL数据。追加(nurl[I] n title[I])
返回urldata
def downPic(网址,保存路径):#下载图片
picname=url.split(/)[-1]
打印("下载:"网址)
picdata=requests.get(url)
以打开(保存路径picname, wb )作为文件:
file.write(picdata.content)
def getdata(ulist): #根据网站分类链接、名称进一步解析这段代码是下载图片主体代码
url=ulist.split()[0]
til=ulist.split()[1]
html=gethtml(url, utf-8 )
ehtml=etree .HTML(html)
计数=""。加入(ehtml。XPath(//*[@ class= more r ]/em/text()))
page=int(count) //20
if int(count) % 20 0:
页面=1
对于范围内的我(1,第一页):#获取各分类下面所有图集链接
nurl=url page/ str(i)
html=gethtml(nurl, utf-8 )
ehtml=etree .HTML(html)
lvurl=ehtml。XPath(//*[@ class= img ]/@ href )
对于lvurl中的j:#获取每个图集页数和链接
html=gethtml(j, utf-8 )
ehtml=etree .HTML(html)
lvurl=" .加入(ehtml。XPath(//*[@ id= imagecx ]/h1/span/text())#获取图集页数
标题=""。加入(ehtml。XPath(//*[@ id= imagecx ]/h1/text())#获取图集名称
title=title.replace((),)
lvurl=lvurl.replace(1/,)
path=保存路径 \ \ 直到 \ \ filter fname(title) \ \
mkdir(路径)
对于范围内的k(1,int(lvurl)): #获取每个图集页面的图片
zurl=j.replace( . html , _ str(k) .html’)
html=gethtml(zurl, urf-8 )
ehtml=etree .HTML(html)
pic URL=ehtml。XPath(//*[@ class= image _ CX _ cont ]/img/@ src )
对于图中的l:
downPic(l,path) #下载图片
if __name__==__main__ :
url=http://mzsock.com
savepath=C:\\mzsock #保存位置
urllist=geturl(url)
pool=ThreadPool(4)
results=pool.map(getdata,urllist)
pool.close()
pool.join()
打印(任务全部完成~!)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。