这个代码的原理是用百度作为访问点,脚本根据使用者所输入的关键字去搜索图片,并且下载到使用者所创建的文件夹中。

下面为代码实例:

# encoding = 'UTF-8'
__author__ = '_chao'import requests,urllib
import re
import sys
import socket
import osfrom urllib import requestheaders = {'Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3346.9 Safari/537.36','cookie':'BAIDUID=DA4019EA9B9C2455A0D0518917126251:FG=1; BIDUPSID=DA4019EA9B9C2455A0D0518917126251; PSTM=1519563931; BDUSS=5BVjZGeVczVGlWb2plc2NrVVNhOFRGczdaaUQ3aHZ5dURlZDZVYXF4UkFPc3BhQVFBQUFBJCQAAAAAAAAAAAEAAADdyqxfWWNXZWlkb2xpZWIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECtolpAraJaYm; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1441_21088; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; PSINO=7; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=ala; BDRCVFR[tox4WRQ4-Km]=mk3SLVN4HKm'
}old_url = []                                                                # 用来存放已经下载过的urldef download_imgs(html,word):socket.setdefaulttimeout(3)                                         # 对整个socket层设置超时时间tank_url = []                                                       # 存放匹配到的urlimg_urls = re.findall(r'"objURL":"(.*?)",',html)                    # 取"objURL":"和“,中间的那段tank_url.append(img_urls)                                           # 向tank_url中添加urlfor urls in tank_url:                                               # urls为一个列表中的多个urlfor url in urls:if url not in old_url:                                      # 判断是否为下载过的url,不是即下载try:pic = requests.get(url,timeout=5)                   # 设定请求超时5秒if pic.status_code == 200:                          # 请求状态码为200(正常)的才下载old_url.append(url)print('正在下载第%s张的图片...' % (len(old_url))) # 获取old_url中的元素个数即可知道当前图片个数request.urlretrieve(url, r'D:/'+filemane+'/img_%s.jpg' %len(old_url))print('下载完成\n-------------')else:print('【网站请求错误!】---404')                  except  Exception as e:print('【网站异常!】:',e)else:print('【已过滤重复图片】')if __name__ == '__main__':print('=======================================欢迎使用超超图片下载软件=======================================\n')print('*****************************************************************************************************\n')path = r'D:'filemane = input('_________________请输入存放图片的文件夹名(默认在D盘,文件名不能重复!): ')os.path.isdir(path)                                                                                         # 没有not时,创建文件夹。加not为存在文件夹时,继续存入。---if not...os.mkdir(os.path.join(path, filemane))                                                                      # 在该路径创建一个文件夹print('                 【创建成功!】\n')word = input('_________________请输入搜索关键字 : ' )word = word.encode('utf-8')                                                                                 # 将输入的中文字符串转化成utf-8格式(十六进制),此时word = 'xe4\xb8\xad\xe6\x96\x87's = urllib.request.quote(word.decode(sys.stdin.encoding).encode('utf8'))                                    # 再将十六进制中文转化为url编码格式,如s = '%2%3%q'for page in range(0,1181,20):                                                                               # 每隔20换一个页面      url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+s+'&pn={}&gsm='.format(page)    # 实现翻页,获取大量urlresponse = requests.get(url,headers = headers)                                                          # 请求urlif response.status_code == 200:                                                                         # 当状态吗为200时,才执行下载操作html = response.text                                                                                # 将获取的相应解析出来download_imgs(html, word)                                                                           # 给下载器函数传入解析页面信息和输入关键字else:passexit(0)

-----这个脚本理论上的能把百度上有的关键字图片都下载下来。但是因为百度图片只有开始的前几页才是比较好看,比较符合关键字的图片,所以建议只爬取100张左右即可,否则图片质量很低。

-----可以考虑在一些大型图片下载网站爬取,期待下次的改进版本!

自制python图片下载器相关推荐

  1. python图片下载器(百度图片)

    之前觉得爬虫很好玩,去网页上面抓取数据感觉很神奇.初次接触在导入包就出现了问题,requests没有导入到程序中,在cmd命令里面输入pip install requests,下载到一半的时候就报错了 ...

  2. Python图片下载器(单线程PK多线程)_一蓑烟雨任平生

    文章目录 前言 一.单线程下载图片 二.多线程爬取图片 总结 前言 爬取图片很简单,但是单线程跟多线程的对比就不一样了,可以看到下载速度 一.单线程下载图片 # =================== ...

  3. 用python爬虫制作图片下载器(超有趣!)

    这几天小菌给大家分享的大部分都是关于大数据,linux方面的"干货".有粉丝私聊小菌,希望能分享一些有趣的爬虫小程序.O(∩_∩)O哈哈,是时候露一手了.今天给大家分享的是一个适合 ...

  4. 【kimol君的无聊小发明】—用python写图片下载器

    [kimol君的无聊小发明]-用python写图片下载器 前言 一.单线程版 二.多线程版 写在最后 Tip:本文仅供学习与参考,且勿用作不法用途~ 前言 某个夜深人静的夜晚,我打开了自己的文件夹,发 ...

  5. 装X利器:做一个Python爬虫小工具——图片下载器

    一.项目描述 前言: 这是一个非常简单的网络爬虫,非常适合初学者了解Python连接网络的初级操作: 平时,如果我们要在网络上下载图片,大家的做法通常是右键,然后图片另存为,但是我们是程序员,我们当然 ...

  6. python:实现Image Downloader图片下载器(附完整源码)

    python:实现Image Downloader图片下载器 def ImageDownloader(url):import os, re, requestsresponse = requests.g ...

  7. python编写下载器可暂停_python 并发下载器实现方法示例

    本文实例讲述了python 并发下载器实现方法.分享给大家供大家参考,具体如下: 并发下载器 并发下载原理 from gevent import monkey import gevent import ...

  8. 百度图片下载器2.0

    前段时间写了一个百度图片下载器,结果发现有很多人需要使用.说实话之前写的那一款百度图片下载器比较LOW,今天刚好有时间就做了一下升级. 完整源代码的获取方式放在文末了,有需要的直接下载即可. 更新了两 ...

  9. python编写下载器可暂停_python多进程断点续传分片下载器

    python多进程断点续传分片下载器 标签:python 下载器 多进程 因为爬虫要用到下载器,但是直接用urllib下载很慢,所以找了很久终于找到一个让我欣喜的下载器.他能够断点续传分片下载,极大提 ...

最新文章

  1. http请求中乱码------编码的转换
  2. NC单据模板公式(6大类)
  3. 青山常在,绿水长流,又一个新地方了
  4. openbravo erp介绍(一)
  5. html超链接本地文件为什么打不开,为什么word文件的本地超链接打不开呢
  6. VR乒乓球项目Unity3D 开发经验整理,1总纲
  7. Android—传感器-方向传感器
  8. jQuery获取元素上一个、下一个、父元素、子元素
  9. 【论文解读】Self-Explaining Structures Improve NLP Models
  10. 美国华盛顿州立大学计算机排名,华盛顿州立大学计算机科学computer science专业排名第251~300名(2020THE泰晤士高等教育世界大学排名)...
  11. 5V5联机对战游戏源码
  12. 内核驱动隐藏【绕过PatchGuard】
  13. inode节点介绍及查看和删除
  14. 如何不靠运气变得富有 (四) —— 致富与运气无关
  15. RT Thread Free Modbus移植问题整理
  16. moxa串口服务器网页访问失败,moxa多串口卡常见故障解决
  17. MATLAB函数——minmax()
  18. spring boot Invalid bound statement (not found): com.su.mapper.UserMapper.getAllUsers
  19. 详解-java调用腾讯云的短信接口(从申请到测试完成)
  20. 【物联网毕业设计】 寝室宿舍门禁刷卡系统设计与实现 - 树莓派 单片机 嵌入式

热门文章

  1. 创业项目融资似乎很容易。而事实上,真正创业拿到融资的项目连1%都不到。
  2. 优酷网视频播放器站外调用详解
  3. mysql 计算成功率_mysql数据统计技巧备忘录
  4. 黑猴子的家:Minimal Install VS Server with GUI VS GNOME Desktop
  5. ps裁剪和裁切的区别_如何熟练使用ps裁剪工具裁切出一张好的图片
  6. sklearn中的数据集2 (Covertype 一个关于植被的数据集)
  7. ieg技术总监_干货!从程序员到技术总监,大牛内部分享的资料
  8. 骨传导耳机有什么优缺点,骨传导耳机好用吗
  9. npm install WARN package.json not exists: E:\SpringBoot\workplace\D4_pc_ui\.idea\package.json
  10. uni-app - 设置最外层容器高度为100%