2019独角兽企业重金招聘Python工程师标准>>>

  1. 创建一个 Queue.Queue() 的实例,然后使用数据对它进行填充。
  2. 将经过填充数据的实例传递给线程类,后者是通过继承 threading.Thread 的方式创建的。
  3. 生成守护线程池。
  4. 每次从队列中取出一个项目,并使用该线程中的数据和 run 方法以执行相应的工作。
  5. 在完成这项工作之后,使用 queue.task_done() 函数向任务已经完成的队列发送一个信号。
  6. #!/usr/bin/env python
    #encoding:UTF-8import re
    import urllib
    import threading
    import time
    import Queuedef getHtml(url):html_page=urllib.urlopen(url).read()return html_page#提取网页中图片的URL
    def getUrl(html):pattern=r'http://.*?\.jpg!mid'   #正则表达式  .*?(匹配http://和\.jpg!mid之间所有字符串)imgre=re.compile(pattern)imglist=re.findall(imgre,html)   #re.findall(pattern,string)  在string中寻找所有匹配成功的字符串,以列表形式返回值return imglistclass getImg(threading.Thread):def __init__(self,queue):        #进程间通过队列通信,所以每个进程需要用到同一个队列初始化threading.Thread.__init__(self) self.queue=queue#self.setDaemon(True)         #守护线程self.start()                 #启动线程#使用队列实现进程间通信def run(self):global countwhile (True):imgurl = self.queue.get()# print self.getName()#urllib.urlretrieve(url,filname) 将url的内容提取出来,并存入filename中 urllib.urlretrieve(imgurl, '/home/dragonriver/图片/girls/%s.jpg' % count)# print "%s.jpg done"%countcount += 1if self.queue.empty():breakself.queue.task_done()  #当使用者线程调用 task_done() 以表示检索了该项目、并完成了所有的工作时,那么未完成的任务的总数就会减少。def main():global counturl="http://girl-atlas.com/a/10130205170100000231"  #要爬的网页地址 html=getHtml(url)imglist=getUrl(html)threads=[]count=0queue=Queue.Queue()#将所有任务加入队列for i in range(len(imglist)):queue.put(imglist[i])#多线程爬去图片for i in range(4):thread=getImg(queue)threads.append(thread)#合并进程,当子进程结束时,主进程才可以执行#for thread in threads:#  thread.join()#另一种保持主进程阻塞的方法,次方法和前面的self.queue.task_tone()相照应#两个要同时使用#queue.join()if __name__=='__main__':main()print "Down"

转载于:https://my.oschina.net/yulongjiang/blog/182508

python多线程爬取图片相关推荐

  1. python多线程爬取妹子图

    python多线程爬取妹子图 python使用版本: 3.7 目的: 自己选择下载目录,逐个将主题图片保存到选定目录下. 效果: 一秒钟左右下载一张图片,下了七八十组图片暂时没什么问题,不放心的话,可 ...

  2. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

  3. Python 多线程爬取西刺代理

    西刺代理是一个国内IP代理,由于代理倒闭了,所以我就把原来的代码放出来供大家学习吧. 镜像地址:https://www.blib.cn/url/xcdl.html 首先找到所有的tr标签,与class ...

  4. python多线程爬取ts文件并合成mp4视频

    python多线程爬取ts文件并合成mp4视频 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python多线程爬取ts文件并合成mp4视频 前言 一.分析页面 ...

  5. 【大学生课程实践】实操:使用Python爬虫爬取图片

    实操:使用Python爬虫爬取图片 参考链接: 源码部署 安装源码中的爬虫库 创建 images文件 参考链接: 本博客作为大佬博客学习笔记记录 参考链接:孩子说"你没看过奥特曼" ...

  6. [python爬虫] 爬取图片无法打开或已损坏的简单探讨

    本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...

  7. python多线程爬取世纪佳缘女生资料并简单数据分析

    一. 目标 ​ 作为一只万年单身狗,一直很好奇女生找对象的时候都在想啥呢,这事也不好意思直接问身边的女生,不然别人还以为你要跟她表白啥的,况且工科出身的自己本来接触的女生就少,即使是挨个问遍,样本量也 ...

  8. python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...

    原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...

  9. 斗图斗不过小伙伴?python多线程爬取斗图网表情包,助你成为斗图帝!

    最近python基础课讲到了多线程,老师让交个多线程的实例练习.于是来试试多线程爬虫,正好复习一下mooc上自学的嵩天男神的爬虫知识.想法很美好,过程却很心酸,从早上开始写,每次出现各种奇怪问题,到现 ...

最新文章

  1. 「NLP」 聊聊NLP中的attention机制
  2. SharePoint 2013安装图文教程
  3. php sprintf u,PHP sprintf()格式化用法详解
  4. MySQL explain
  5. Centos调整时间时区
  6. phpcms v9中模板标签和联动菜单的使用方法详解
  7. python出现traceback什么意思_python-异常处理 traceback获取详细异常
  8. 方舟编译器开源技术沙龙北京站首秀:让开源激活软件开发的潜力
  9. Django表中的字段
  10. java 反射 框架_Java——利用反射实现框架类
  11. 【python】我用python抓取了19个一线城市三年的房价数据,并做了走势分析
  12. 1.5 极限的存在准则和两个重要极限
  13. 详解MOVE PROTOCOL的测试版,让健康运动如影随形
  14. C++Primer 习题 第7章
  15. 使用云服务器上线网站流程
  16. 电子脑PHP动画制作,gif动图用什么软件制作
  17. 用纯javascript和html编写仿淘宝注册页面(带源码)
  18. java金蝶云单据查询_凭证查询
  19. 利用Python实现短视频完美伪原创,制作独一无二的视频
  20. 黑轴和青轴哪个声音大 黑轴和青轴的区别

热门文章

  1. redis中的hash
  2. 监听端口的非阻塞性不具有继承性
  3. IT人不要一辈子做技术
  4. ES6 let const 关键字
  5. 【机器学习】周志华 读书笔记 第一章 绪论
  6. python基础十四之匿名函数
  7. none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
  8. mac os 下 Android Studio设置真机调试
  9. Python Twisted系列教程16:Twisted 进程守护
  10. Chapter 5 带颜色的同心圆