前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python做一个简易图片下载工具

python做一个简易图片下载工具

作者头像
未来sky
发布2018-12-05 11:42:36
3410
发布2018-12-05 11:42:36
举报
文章被收录于专栏:好好学习吧好好学习吧

代码有点乱,先这样

代码语言:javascript
复制
# -*- coding:utf-8 -*-
#__author__ :kusy
#__content__:文件说明
#__date__:2018/11/01 11:01

import urllib.request, urllib.parse, urllib.error
import os
import re
import time
import threading


# fileno = 0
# lock = threading.Lock()


def mkdir(dir):
    cd = os.path.abspath(dir)
    if not os.path.exists(cd):
        os.mkdir(cd)


def gethtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    # print(html)
    return html


def getimage(html, searchwords):
    reg = r'"img":"(http:.*?\.jpg)"'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html.decode('utf-8'))
    # print(imglist)
    index_start = 0
    splitcount = round(len(imglist) / 4)
    threadlist = []
    # 开4个线程,分开同时下载
    for t in range(4):
        if index_start + splitcount > len(imglist):
            imglist_part = imglist[index_start:]
        else:
            imglist_part = imglist[index_start:index_start + splitcount]
        index_start += splitcount
        threadlist.append(threading.Thread(target=download, args=(imglist_part, searchwords, t + 1)))

    for th in threadlist:
        th.start()
    for th in threadlist:
        th.join()

def download(imglist,searchwords,threading_no):
    # global fileno
    fileno = 0
    for imgurl in imglist:
        imgurl = imgurl.replace('\\','')
        # lock.acquire()
        try:
            filename = searchwords + '-' + str(threading_no) + '-' + str(fileno)
            # print(filename + ' 获取中...')
            urllib.request.urlretrieve(imgurl,'下载图片/%s.jpg' % filename)
        # except (urllib.error.HTTPError, urllib.error.URLError):
        except Exception:
            continue
        # 打印信息放在这里是因为,如果放在前面,当前请求异常时会重复打印该信息
        print(filename + ' 获取中...')
        fileno += 1
        # lock.release()

if __name__ == '__main__':
    mkdir(u'下载图片')
    searchwords = input(u'请输入搜索内容后回车 >>> ')
    print(u'\n-----------------------文件存放在[下载图片]目录下-----------------------')
    # 指定图片来源,这里是360搜索,可以换成其他的
    myurl = "http://image.so.com/i?q=" + urllib.parse.quote(searchwords) + "&src=srp"
    html = gethtml(myurl)
    getimage(html, searchwords)
    print(u'\n-----------------------下载完毕,谢谢!!-----------------------')
    print(u'\n-----------------------CopyRight  @Kusy -----------------------')
    time.sleep(5)

执行效果

转成exe文件,运行

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码有点乱,先这样
  • 执行效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档