代码有点乱,先这样

# -*- 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文件,运行

python做一个简易图片下载工具的更多相关文章

  1. 使用python做一个IRC在线下载器

    使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...

  2. 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...

  3. jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具

    1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...

  4. Python实战:美女图片下载器,海量图片任你下载

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

  5. 用Python做一个知乎沙雕问题总结

    用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...

  6. python -m http.server 搭建一个简易web下载服务器

    在打vulnhub靶场的时候遇到的一个问题 目录 一.进到需要发送的安装包目录 二.开启http服务 三.访问服务器 一.进到需要发送的安装包目录 比如设置一个专门发送,传输的文件的文件夹,cmd命令 ...

  7. 媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。

    ​    最近某音上的动漫特效特别火,很多人都玩着动漫肖像,我媳妇儿也不例外.看着她这么喜欢这个特效,我决定做一个图片处理工具,这样媳妇儿的动漫头像就有着落了.编码    为了快速实现我们的目标,我们 ...

  8. python之做一个简易的翻译器(一)

    平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字“免费翻译接口”,然后找到 ...

  9. [Python]豆瓣用户读书短评下载工具

    简介 朋友问我能不能做一个下载他在豆瓣读书上的短评的工具,于是就做了这个“豆瓣用户读书短评下载工具”. GitHub链接:https://github.com/xiaff/dbc-downloader ...

随机推荐

  1. Python【day 14-2】递归遍历文件夹

    #需求 遍历文件夹中所有的子文件夹及子文件--用递归实现 '''''' ''' 伪代码 1.遍历根目录--listdir for 得到第一级子文件夹(不包含子文件夹的子文件)和文件 2.判断是文件还是 ...

  2. Java自学-集合框架 ArrayList常用方法

    ArrayList常用方法 步骤 1 : 增加 add 有两种用法: 第一种是直接add对象,把对象加在最后面 heros.add(new Hero("hero " + i)); ...

  3. web前端-js

    1. js基础语法 声明变量 var a = 10; 查看变量类型 typeof a; 打印,测试语句 alert(a); #使用弹出框显示 console.log(a);    #使用console ...

  4. webpack4 打包静态资源

    demo 代码点此,开始之前,先做点准备工作. 准备工作 准备一个空文件夹,然后执行下列命令: npm init -y npm i -D webpack webpack-cli 然后创建一个 dist ...

  5. css中的baseline

    这是css中的一个容易被人忽略的概念,今天在知乎上看到一个问题,这个问题应该是关于baseline,才去补习了一下关于baseline的知识,首先我来还原一下问题: <div style=&qu ...

  6. 微信小程序滚动tab的实现

    微信小程序滚动tab的实现 1.目的:为了解决滚动版本的tab,以及实现虹吸效果. 2.方案:自己动手写了一个Demo,用于测试实现如上的效果.其代码有做参考,在这里先声明.具体的参照如下:重庆大学二 ...

  7. maven 学习---Maven依赖机制

    在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级. 案例分析 让我们看一个案例研究,以了解它是如何工作的.假设你想使用 Log4j 作为项目的日志.这里你要做什么? 1.在传统 ...

  8. Mybatis使用Mybatis-generator插件及配置(数据库逆向工程)

    Mybatis使用Mybatis-generator插件 首先在POM.xml文件添加架包,我这里用的是SpringBoot,所以用的也是SpringBoot架包,最少要mybatis,generat ...

  9. Mysql时区无法识别

    Unable to connect to database. Tried 1 times {:error_message=>“Java::JavaSql::SQLException: The s ...

  10. 【IDE_IntelliJ IDEA】idea中设置类和方法的注释模板

    参考博文:idea生成类注释和方法注释的正确方法