本人电子系,只为一学生。心喜计算机,小编以怡情。


说明:下载百度图片中的美女图片

修改:默认url都已经写好了,只需要改一下cookies就可食用

附加:运用了多线程,一个线程生产url,十个线程消费下载图片

解释:
1、用正则表达式解析网页内容
2、建议用IDE工具运行,以便随时终止
3、用的os模块,在工作空间里建立一个《小图片》的文件夹,图片都默认下载里面

缺点:我不太懂js的图片瀑布流效果怎么弄,所以一个关键词页面只能下载30张左右图片就转到其他的页面了

注意:这个是简单爬虫,爬完页面会自动爬 网页上面推荐的其他页面,即 相关搜索

import os
import  re
import requests
import threading#得到路径,建立小图片文件夹,图片默认下载其中
currentpath=os.getcwd()
if not os.path.exists(currentpath+os.sep+'小图片'):os.mkdir(currentpath+os.sep+'小图片')cookies={'xxxxxxxx': 'xxxxxxxx'}#用自己的cookies,别拿我的干坏事headers={'Host':'xxxxxxxx',#封装头部,否则有些图片下载不下来
'Referer':'xxxxxxxxxxxxx',
'Upgrade-Insecure-Requests':'x',
'User-Agent':'xxxxxxxxxxxxxxxxxxxxxxxxx'}#得到页面上图片的url与相关搜索的url
def search(searchurl):response = requests.get(searchurl,cookies=cookies,headers=headers)text=response.texts = re.findall(r'thumbURL":"([a-zA-z]+://[\w\.%=/\d,&]*)', text)#所有图片的urlm = re.findall(r'search/index.(\S*)"', text)#当前页面指向其他页面的urlreturn s,m#根据传入的url与jpg名字下载图片
def download_pic(url,name):path=os.getcwd()+os.sep+'小图片'data=requests.get(url,cookies=cookies,headers=headers).contentwith open(path+os.sep+name,'wb') as f:f.write(data)print('图片下载完成:%s' % name)gimagelist=[]#图片的url
queue=[]#相关搜索的url
queue.append('tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&fm=index&pos=history&word=%E7%BE%8E%E5%A5%B3')#默认搜索关键词美女,你也可以换成其他的关键词url的index?后面的部分
gCondition=threading.Condition()#线程相关
visited=set()#用来存放已经搜过的页面的url
class Producer(threading.Thread):def run(self):print('%s started' % threading.current_thread())global gimagelistglobal gConditionglobal queuefor j in range(1):#我默认循环一次,你也可以改很多a=queue.pop(0)#从队列中取出一个关键词url尾部searchurl='http://image.baidu.com/search/index?'+a#封装成urlif searchurl not in visited:#如果没有访问过imgs,otherurl=search(searchurl)gCondition.acquire()#上锁for i in imgs:gimagelist.append(i)#添加图片urlgCondition.notify_all()#唤醒所有等待的消费者gCondition.release()#释放锁visited.add(searchurl)#标记为已访问过queue.extend(otherurl)#将相关搜索的url放入class Consumer(threading.Thread):def run(self):print('%s started' % threading.current_thread())while True:global gimagelistglobal gConditiongCondition.acquire()#上锁while len(gimagelist)==0:gCondition.wait()#没有则等待url=gimagelist.pop()name=url.rsplit('/')[-1]#取名字,以url后面的部分做名字gCondition.release()download_pic(url,name)#下载图片if __name__=='__main__':Producer().start()for i in range(10):#十个消费者线程数Consumer().start()

Python3 百度图片 美女 下载 爬虫 多线程相关推荐

  1. 爬虫百度图片并下载的程序——C#程序

    爬虫百度图片并下载的程序--C#程序 1.首先po一下主界面--经过作者美化(残害)之后的界面 主要控件及功能介绍: 左上角的一个groupBox控件,text为基本设置,里面的控件包括3个label ...

  2. 百度图片批量下载助手

    简介: 百度图片批量下载助手可以帮助用户将所需的百度图库图片下载下来,支持批量下载,软件功能很强大,使用起来也很简单,用户可以通过搜索关键词查找到相关的图片,从而将百度图库下载到本地,软件占用内存小, ...

  3. 一款简易的百度图片批量下载软件

    学了一段时间的爬虫,于是就想着做一个小项目练练手,平时生活中我们可能需要去百度上搜索图片,有时想要下载多张图片,怎么办呢?笨方法就是一张一张的用鼠标右键进行保存图片,这是不是很麻烦,所以就自己想了一下 ...

  4. Node.js meitulu图片批量下载爬虫1.051

    原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...

  5. 【pyhon】nvshens图片批量下载爬虫1.01

    # nvshens图片批量下载爬虫1.01 # 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕 from bs4 import BeautifulSoup ...

  6. Node.js monly图片批量下载爬虫1.00

    此爬虫又用到了iconv转码,代码如下: //====================================================== // mmonly图片批量下载爬虫1.00 ...

  7. 爬虫python下载-如何用Python爬虫实现百度图片自动下载?

    制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或者XPath表达式 正式编写 python 爬虫代码 效果预览 运行效果如下: 存放图片的文 ...

  8. python3.7 根据关键词 爬取百度图片并下载到本地

    URL地址:http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1 ...

  9. 自己动手写工具:百度图片批量下载器

    开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了 ...

  10. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

最新文章

  1. Oracle Study之--Oracle等待事件(3)
  2. tf.keras.layers.MaxPool2D 示例 池化层
  3. CMM与CMMI的关系
  4. Hyper-V Server虚拟机快照(检查点)
  5. P1314 聪明的质监员(前缀和+二分)
  6. 技术人的少年感,和年龄无关。
  7. Yii 2.0高级版 下拉框预设值、默认值
  8. (转)非常完善的Log4net详细说明
  9. 星三角正反接线实物图_实物讲解星三角降压启动接线图
  10. map 转 json格式string字符串
  11. 20181120 复习菜鸟教程中的node.js
  12. 视频素材网站,免费可商用
  13. win10 网络重置
  14. PostgreSQL下载安装教程(及PostGIS)
  15. NLP太卷,我去研究蛋白质了~
  16. iOS 列表三级展开
  17. 为什么分布电容会缩短信号的传输距离
  18. js 生成条码和打印
  19. 订单23系统服务器,《死亡搁浅》攻略——第3节:芙拉吉尔 订单23.寻物:系统服务器...
  20. 常用技术指标之一文读懂RSI指标

热门文章

  1. 移动计算机笔试题,广东移动笔试题目
  2. 工程项目成本费用明细表_建设工程项目成本明细表模板.xls
  3. gbk、utf-8,这都是啥玩意儿? “Python编码“ 最全的教程来了
  4. 概率论-多维随机变量及其分布思维导图
  5. Matlab矢量图导出PDF格式方式及LaTex图片排版技巧
  6. 【微机原理与接口技术学习实践】汇编语言程序设计实现——.ASM文件、.OBJ文件、.EXE文件综合
  7. 中国交通信号控制技术发展回顾
  8. 【unity】编辑模式预览Animator动作,2种实现。 其中一种 playback模式是Cinema Director用的会使Unity Crash
  9. php 仓库出入库管理软件,出入库管理软件_仓库出入库管理软件【免费版】-太平洋下载中心...
  10. chromium 47 Chrome浏览器启动命令行参数