代码有点乱,先这样

# -*- 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. APS.NET MVC + EF (06)---模型

    在实际开发中,模型往往被划分为视图模型和业务模型两部分,视图模型靠近视图,业务模型靠近业务,但是在具体编码上,它们之间并不是隔离的. 6.1 视图模型和业务模型 模型大多数时候都是用来传递数据的.然而 ...

  2. jenkins 比较好的学习的文章

    来自 :  https://www.cnblogs.com/horizonli/tag/jenkins/

  3. web前端-js

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

  4. HTML input属性详谈

    value属性 value属性指定输入字段的初始值: <form> 名字:<br> <input type="text" name="you ...

  5. 前端vue项目js中怎么保证链式调用后台接口

    在一个for循环中对同一接口调用多次,如何保证逐步执行,同步执行. html部分 <DcFileUpload v-for="(item, index) of fileLengthLis ...

  6. maven 学习---Maven 插件

    什么是 Maven 插件? Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成.Maven 插件通常被用来: 创建 jar 文件 创建 war 文件 编译代码文件 代码单元测试 创 ...

  7. AccessCenter 模块结构

    AccessCenter 模块结构

  8. vue定时器+弹框 跳到登陆页面

    1.做一个请求拦截,并弹框提示几秒后,跳转到登陆首页或是点击确定之后直接跳转拦截用了this.$axios.interceptors.response页面上的弹框组件用了vux的组件vux地址:htt ...

  9. Oracle client 安装、配置

     一.安装 链接: https://pan.baidu.com/s/1Yph6hiNkCJsApAzu_Vx2ew 提取码: r9ye 二.配置 1.控制面板\所有控制面板项\管理工具\数据源(ODB ...

  10. Django框架(二十一)--Django rest_framework-频率组件

    一.作用 为了控制用户对某个url请求的频率,比如,一分钟以内,只能访问三次 二.自定义频率类 # 写一个频率认证类 class MyThrottle: visit_dic = {} visit_ti ...