代码有点乱,先这样

# -*- 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. jsonp格式前端发送和后台接受写法

    jsonp是ajax提交的一种格式不会受跨域限制 一.前端发送 <button>11111</button> <script src="https://cdn. ...

  2. Delphi Webbrowser使用方法详解

    1.webbroser介绍 该组件是一个浏览器组件,可以显示一个指定地址的网页.设置网页打开时的主页以及对网页进行相关的操作,同时也可以对HTML文件进行剪切.复制.粘贴.删除等操作.该 组件在Int ...

  3. 通过MES技术居然可以防止制造数据造假?

    近些年来我们经历了太多制造数据造假事件,特别是前段时间曝出的医药制造事件更是将我们群众的愤怒值推到了最高点.不过我们最应当做的是,冷静下来,思考一下各行各业的我们是不是都该做些什么了?毕竟当下一个灾难 ...

  4. Django 中使用 js 操作 cookies

    session与cookie对比 Cookie: 保存在用户浏览器端的键值对 本地可以修改:如果有敏感信息,可以被看到 Session: 保存在服务器端的键值对 服务端:保存键值对{'随机字符串':{ ...

  5. day09 作业

    简述定义函数的三种方式 空函数.无参函数.有参函数 简述函数的返回值 函数内部代码经过一系列的逻辑处理返回的结果 函数没有返回值,默认返回None 函数可以通过return返回出返回值 return可 ...

  6. [TCP/IP] ping traceroute和TTL

    1.Time To Live是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间.当我们对网络上的主机进行ping操作的时候,我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送 ...

  7. JS高阶---作用域面试

    面试题1: ,答案为10 有一点需要明确:作用域是在定义编写代码时已经决定好的 面试题2: 结果1: 结果2: 首先在内部作用域找,没有 然后在全局作用域找,window没有,所以会报错 如果想找对象 ...

  8. 基于DBUtils实现数据库连接池及flask项目部署

    阅读目录 flask中是没有ORM的,如果在flask里面连接数据库有两种方式 数据库连接池原理 模式一: 模式二: 数据库连接池 flask中是没有ORM的,如果在flask里面连接数据库有两种方式 ...

  9. python-读取txt文本

    import tensorflow as tf import os with open('test_read.txt', 'r') as file: lines = file.readlines() ...

  10. hdu1495-非常可乐-(倒水问题bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 题解: 1.最少次数?江湖套路,bfs.2.怎么倒?从一个杯子倒到另一个杯子.3.倒多少?因为没有刻度,所 ...