python做一个简易图片下载工具
代码有点乱,先这样
# -*- 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做一个简易图片下载工具的更多相关文章
- 使用python做一个IRC在线下载器
使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- Python实战:美女图片下载器,海量图片任你下载
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- 用Python做一个知乎沙雕问题总结
用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...
- python -m http.server 搭建一个简易web下载服务器
在打vulnhub靶场的时候遇到的一个问题 目录 一.进到需要发送的安装包目录 二.开启http服务 三.访问服务器 一.进到需要发送的安装包目录 比如设置一个专门发送,传输的文件的文件夹,cmd命令 ...
- 媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。
最近某音上的动漫特效特别火,很多人都玩着动漫肖像,我媳妇儿也不例外.看着她这么喜欢这个特效,我决定做一个图片处理工具,这样媳妇儿的动漫头像就有着落了.编码 为了快速实现我们的目标,我们 ...
- python之做一个简易的翻译器(一)
平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字“免费翻译接口”,然后找到 ...
- [Python]豆瓣用户读书短评下载工具
简介 朋友问我能不能做一个下载他在豆瓣读书上的短评的工具,于是就做了这个“豆瓣用户读书短评下载工具”. GitHub链接:https://github.com/xiaff/dbc-downloader ...
随机推荐
- VS Code 自动修改和保存 代码风格 == eslint+prettier
最近因为用到VS Code,需要统一所有人的代码风格(前端语言js/html/css等,或者后端语言 go/python等也可以这么用). 所以参考了一些网络资料,记录下设置步骤,以便后续查阅. St ...
- Linux入门——注意事项
Linux入门——注意事项 摘要:本文主要说明了在使用Linux操作系统时,需要注意的问题. 严格区分大小写 和Windows不同,Linux是严格区分大小写的,包括文件名和目录名.命令.命令选项.配 ...
- Maven快速入门--Idea版
目录 1.web项目的基本知识 1.1 项目构建 1.1.1传统的构建过程如下: 1.1.2 mavn构建项目 1.2 maven构建项目的优点: 2. 依赖管理 2.1 传统依赖管理 2.1.1 手 ...
- http接口和webservice接口的区别
web service(SOAP)与HTTP接口的区别 什么是web service? soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: t ...
- addEventListener和JavaScript的事件机制
JavaScript的事件处理分为两个阶段: 捕获阶段:从根节点向event.target层层传递 冒泡阶段:从event.target向根节点层层传递 addEventListener(eventN ...
- Vue内置组件[回顾]
1.动态组件 在某些场景,往往需要我们动态切换页面部分区域的视图,这个时候内置组件component就显得尤为重要. component接收一个名为is的属性,is的值应为父组件中注册过的组件的名称, ...
- warning: Unexpected unnamed function (func-names)
warning: Unexpected unnamed function (func-names) 看到这个提示基本是就是说你的函数不能是匿名函数,最好可以起一个名字,然后你增加一个函数名称就好了 R ...
- linux 修改文件打开数量限制
1.查看打开文件数量限制 ulimit -a ulimit -n 2.临时修改 ulimit -n 2048 3.永久修改 vi /etc/security/limits.conf 追加 * soft ...
- odoo10学习笔记九:Odoo10 API
转载请转载原文地址:https://www.cnblogs.com/ygj0930/p/11189315.html 一:纪录集API model中的数据是以集合的形式使用的,因此可以使用集合运算来操作 ...
- Django的版本坑
Django2.x与1.x版本之间的坑 App模块中models.py django2.x是中reverse使用方法 from django.urls import reverse ForeignKe ...