制作爬虫的步骤

制作一个爬虫一般分以下几个步骤:

分析需求

分析网页源代码,配合开发者工具

编写正则表达式或者XPath表达式

正式编写 python 爬虫代码

效果预览

运行效果如下:

存放图片的文件夹:

需求分析

我们的爬虫至少要实现两个功能:一是搜索图片,二是自动下载。

搜索图片:最容易想到的是爬百度图片的结果,我们就上百度图片看看:

随便搜索几个关键字,可以看到已经搜索出来很多张图片:

分析网页

我们点击右键,查看源代码:

打开源代码之后,发现一堆源代码比较难找出我们想要的资源。

这个时候,就要用开发者工具!我们回到上一页面,调出开发者工具,我们需要用的是左上角那个东西:(鼠标跟随)。

然后选择你想看源代码的地方,就可以发现,下面的代码区自动定位到了相应的位置。如下图:

我们复制这个地址,然后到刚才的一堆源代码里搜索一下,发现了它的位置,但是这里我们又疑惑了,这个图片有这么多地址,到底用哪个呢?我们可以看到有thumbURL,middleURL,hoverURL,objURL

通过分析可以知道,前面两个是缩小的版本,hoverURL 是鼠标移动过后显示的版本,objURL 应该是我们需要的,可以分别打开这几个网址看看,发现 objURL 的那个最大最清晰。

找到了图片地址,接下来我们分析源代码。看看是不是所有的 objURL 都是图片。

发现都是以.jpg格式结尾的图片。

编写正则表达式

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

编写爬虫代码

这里我们用了2个包,一个是正则,一个是 requests 包

#-*- coding:utf-8 -*-

import re

import requests

复制百度图片搜索的链接,传入 requests ,然后把正则表达式写好

url = 'https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=%E6%A0%97%E5%B1%B1%E6%9C%AA%E6%9D%A5%E5%A4%B4%E5%83%8F&ct=201326592&ic=0&lm=-1&width=&height=&v=index'

html = requests.get(url).text

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

因为有很多张图片,所以要循环,我们打印出结果来看看,然后用 requests 获取网址,由于有些图片可能存在网址打不开的情况,所以加了10秒超时控制。

pic_url = re.findall('"objURL":"(.*?)",',html,re.S)

i = 1

for each in pic_url:

print each

try:

pic= requests.get(each, timeout=10)

except requests.exceptions.ConnectionError:

print('【错误】当前图片无法下载')

continue

接着就是把图片保存下来,我们事先建立好一个 images 目录,把图片都放进去,命名的时候,以数字命名。

dir = '../images/' + keyword + '_' + str(i) + '.jpg'

fp = open(dir, 'wb')

fp.write(pic.content)

fp.close()

i += 1

完整的代码

# -*- coding:utf-8 -*-

import re

import requests

def dowmloadPic(html, keyword):

pic_url = re.findall('"objURL":"(.*?)",', html, re.S)

i = 1

print('找到关键词:' + keyword + '的图片,现在开始下载图片...')

for each in pic_url:

print('正在下载第' + str(i) + '张图片,图片地址:' + str(each))

try:

pic = requests.get(each, timeout=10)

except requests.exceptions.ConnectionError:

print('【错误】当前图片无法下载')

continue

dir = '../images/' + keyword + '_' + str(i) + '.jpg'

fp = open(dir, 'wb')

fp.write(pic.content)

fp.close()

i += 1

if __name__ == '__main__':

word = input("Input key word: ")

url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&ct=201326592&v=flip'

result = requests.get(url)

dowmloadPic(result.text, word)

我们看到有的图片没显示出来,打开网址看,发现确实没了。

因为百度有些图片它缓存到百度的服务器上,所以我们在百度上还能看见它,但它的实际链接已经失效了。

总结

enjoy 我们的第一个图片下载爬虫吧!当然它不仅能下载百度的图片,依葫芦画瓢,你现在应该能做很多事情了,比如爬取头像,爬淘宝展示图等等。

爬虫python下载-如何用Python爬虫实现百度图片自动下载?相关推荐

  1. python爬取某网站高清二次元图片 自动下载

    第一章 Python 爬取网站信息 文章目录 一,什么是爬虫? 二.使用步骤 1.引入库 2.伪装header 3.读取信息并过滤,写入文件 总结 前言 本文只做技术讨论,大家不要一直爬这个小网站,记 ...

  2. python爬虫图片实例-【图文详解】python爬虫实战——5分钟做个图片自动下载器...

    我想要(下)的,我现在就要 python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk ...

  3. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show me the c ...

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

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

  5. python常用小技巧(一)——百度图片批量爬取

    python常用小技巧(一)--百度图片无限制批量爬取 前言:我们在日常使用(搜壁纸,搜美女--)或者科研项目(图像识别)中经常要批量获取某种类型的图片,然而很多时候我们都需要一个个点击下载,有什么办 ...

  6. MIT-Adobe FiveK Dataset 图片自动下载

    MIT-Adobe FiveK Dataset 图片自动下载 MIT-Adobe FiveK是现在很多做图像增强(image enhancement)与图像修饰(image retouching)方面 ...

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

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

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

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

  9. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

最新文章

  1. fgets()用法笔记
  2. golang中的base64
  3. Android底层禁用WiFi和蓝牙功能
  4. 局域网网管软件_网管软件有哪些?那些不同之处
  5. Python操作文件文档
  6. 震惊!腾讯要建AI鹅厂,百度让狗刷脸购物,锤子R-1真机披露
  7. [样本分析] 海莲花CS样本
  8. FFmpeg MP4文件提取音频文件
  9. 恢复计算机注册表命令,电脑的注册表如果损坏怎么恢复
  10. 微软MSBI零基础从数据仓库到商业智能实战(SSIS SSAS SSRS)
  11. Web前端开发中最基本的找错误的方法, 你得了解一下
  12. hadoop之mapreduce教程+案例学习(一)
  13. 阿里云企业备案需要什么资料?
  14. php 单引号 双引号的区别
  15. 如何用matlab画紫罗兰,[转载]基于MATLAB的快速傅立叶分析程序设计
  16. 18000-6C整理-入门query/CRC-5
  17. 只有他,能在西方拍摄出东方的江湖
  18. 电脑游戏性能测试脸型软件,CPU性能测试工具(XtremeMark)5.6.2.420 官方版
  19. 阿里云AIoT智慧人脸门禁
  20. go语言rpc,grpc介绍

热门文章

  1. 趣谈网络协议笔记-二(第五讲)
  2. Android系统所有版本源码Kernel源码
  3. ubuntu dpkg initramfs-tools错误的解决方法
  4. 开发日记-20190911 关键词 C代码实现shell ftw命令
  5. (传送门)android绘图canvas.clipRect()方法的作用
  6. 关于微信聊天记录双击弹出具体显示内容的效果
  7. Hive group by实现-就是word 统计
  8. 关于MYSQL日期 字符串 时间戳互转
  9. django 的用户验证及登录状态保持
  10. javaweb基础(35)_jdbc处理oracl大数据