python根据url下载大量图片,python网页上传文件

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: