之间我们学习了使用Urllib模块手写图片爬虫,在本章内容中,我们会以图片类爬虫为例,为大家讲解如何通过Scrapy框架实现图片爬虫项目。

利用Urllib手写爬虫回顾:

之前在实战的时候使用Urllib手写了爬取京东手机图片信息。
在这里我来写一个简单的输入关键字爬区百度图片搜索第一页的图片。
1、安装requests
2、获取百度图片搜索url信息



通过观察我们可以发现百度图片搜索页面的URL
假设关键字为LOL,则word=LOL
复制出来
http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=LOL
我们需要进行修改。index改成flip

url="https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+word+""

3、进行代码编写。

首先导入要使用的模块

import requests
import os
import re

生成一个目录。

word=input("请输入你要下载的图片:")
if not os.path.exists(word):os.mkdir(word)

再构造url

url="https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+word+""

获取信息进行数据下载保存

r=requests.get(url)
ret=r.content.decode()
result=re.findall('"objURL":"(.*?)",',ret)
for i in result:end=re.search('(.jpg|.png|.gif|.jpeg)$',i)#判断是否以该格式结尾if end == None:i=i+'.jpg'try:with open(word+'/%s'%i[-10:],'ab') as f:img=requests.get(i,timeout=3)f.write(img.content)except Exception as e:print(e)

4、运行我们的爬虫文件

我们可以去当前目录下查看 多出了一个名字为鞠婧祎的目录。
好了。是不是很方便实用、

完整代码如下

import requests
import os
import reword=input("请输入你要下载的图片:")
if not os.path.exists(word):os.mkdir(word)url="https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+word+""#http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=LOL
#index改成flip
r=requests.get(url)
ret=r.content.decode()result=re.findall('"objURL":"(.*?)",',ret)for i in result:end=re.search('(.jpg|.png|.gif|.jpeg)$',i)#判断是否以该格式结尾if end == None:i=i+'.jpg'try:with open(word+'/%s'%i[-10:],'ab') as f:img=requests.get(i,timeout=3)f.write(img.content)except Exception as e:print(e)

图片类爬虫项目功能及思路分析:

接下来开始讲解如何通过Scrapy框架实现图片爬虫项目。

  • 有时候我们需要对互联网中的一些图片进行分析或参考,可以将这些图片爬取到本地储存起来,这样使用会更加方便。
  • 假设我们现在需要做一个商品的图片设计,需要参考网上的一些素材,此时通过手动打开网页查看会很麻烦,我们可以使用爬虫把所有的素材图片都保存到本地使用。

我们本章内容是实现爬取千图网的素材
需要实现的功能有:

  • 1、获取千图网中淘宝设计栏目下的所有图片素材
  • 2、将原图片素材保存到本地的对应目录中

为了提高项目开发的效率,避免在项目开发的过程中思路混乱,我们需要在项目开发前首先理清该项目的实现思路及实现步骤。
实现思路及实现步骤如下:

  • 1、对要爬取的网页进行分析,发现要获取的内容的规律,总结出提取对应数据的格式。总结出自动爬虫各页面的方式
  • 2、创建Scrapy爬虫项目
  • 3、编写好项目对应的 items.py、pipelines.py 、 settings.py
  • 4、创建并编写项目中的爬虫文件,实现爬取当前列表页面的所有原图片(不是缩略图),以及自动爬取各图片列表页

图片类爬虫项目编写实战

首先我们要对爬取的网页进行分析。
打开要爬取的第一个网页:
http://www.58pic.com/tb
我们要分析如何提取该页中所有素材的URL地址
此时我们用该页面中其中一个图片为例子来总结相关规律,比如我们以"淘宝精华橄榄油护肤品促销海报W"来看。查看其源代码
可以发现其对应的图片网址为:
http://www.58pic.con/taobao/22927027.html
对应图片的缩略图地址为:
http://pip.qiantucdn.com/58pic/22/92/70/27p58PIC2hw.jpg!qtwebp226
我们创建一个名为qtpjt的爬虫项目

然后该编写其对应的爬虫文件
将items.py 文件关键部分修改为如下:

import scrapy
class QtpjtItem(scrapy.Item):#define the fields for your item here like:#name = scrapy.Field()picurl = scrapy.Field()#建立picurl存储图片网址picid = scrapy.Field()#建立picid存储图片网址中的用户名

编写好items.py文件之后,我们需要编写pipelines.py文件,将pipelines.py文件修改为如下所示:

import urllib.request
class QtpjtPipeline(object):def process_item(self, item, spider):for i in range(0,len(item["picurl"])):thispic = item["picurl"][i]#根据上面总结的规律构造出原图片的URL地址trueurl = thispic+"_1024.jpg"#构造出图片在本地存储的地址localpath = "D:/Python/myweb/part19/pic"+item["picid"][i]+".jpg"urllib.request.urlretrieve(trueurl,filename=localpath)return item

然后修改配置文件settings.py 我们将配置文件修改为如下:

接下来我们还需要在该爬虫项目中创建对应爬虫,如下所示


此时基于basic模板创建了一个名为qtspd的爬虫

我们需要编写爬虫文件qtspd.py

# -*- coding: utf-8 -*-
import scrapy
import re
from qtpjt.items import QtpjtItem
from scrapy.http import Requestclass QtspdSpider(scrapy.Spider):name = 'qtspd'allowed_domains = ['58pic.com']start_urls = ['http://58pic.com/']def parse(self, response):item = QtpjtItem()paturl = "(http://pic.qiantucdn.com/58pic/.*?).jpg"#提取对应网址item["picurl"] = re.compile(paturl).findall(str(response.body))patlocal = "http://pic.qiantucdn.com/58pic/.*?/.*?/.*?/(.*?).jpg"item["picid"] = re.compile(patlocal).findall(str(response.body))yield  itemfor i in range(1,201):nexturl = "http://www.58pic.com/tb/id-"+str(i)+".html"yield Request(nexturl,callback=self.parse)

调试与运行:

祝大家新年快乐

010:图片类爬虫项目实战相关推荐

  1. python爬虫项目-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  2. post获取重定向的链接 python_欧美音乐网站Python爬虫项目实战

    爬虫项目实战 0x01 目标分析 最近发现一个比较好的欧美音乐下载网站,可以下载大部分高质量欧美音乐.该爬虫项目要实现自动化批量获取用户想要下载的音乐.本文从网站分析.爬虫设计.代码实现三个方面出发, ...

  3. c++builder 运行网站的api_欧美音乐网站Python爬虫项目实战

    爬虫项目实战 0x01 目标分析 最近发现一个比较好的欧美音乐下载网站,可以下载大部分高质量欧美音乐.该爬虫项目要实现自动化批量获取用户想要下载的音乐.本文从网站分析.爬虫设计.代码实现三个方面出发, ...

  4. python爬虫知网实例-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  5. python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)

    爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...

  6. android movie 资源释放,Android 资讯类App项目实战 第四章 电影模块

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 以往的内容 第四章 电影模块 本章内容最终效果 ...

  7. python爬虫新手项目-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  8. python爬虫教程推荐-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  9. Android 资讯类App项目实战 第一章 滑动顶部导航栏

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 该系列的其他文章 第二章 retrofit获取 ...

最新文章

  1. crontab命令使用文档.txt
  2. 空客fctm避免已识别风险_最远可航行15000公里,南航首架空客A350飞机首航,将先飞广州-上海航线再飞国际...
  3. 使用SAP WebIDE消费API Portal里创建的API时的错误消息
  4. 奇怪的问题,再次启动jar包会导致bean对象失效?Unknown redis exception Cannot connect, Event executor group is terminated
  5. linux如何查看磁盘剩余空间
  6. 7-1 近似求PI (15 分)
  7. Robo3T 1.4.3下载安装配置
  8. Java - 类与对象
  9. Python练习题 013:求解a+aa+aaa……
  10. SAS程序探索性因子分析
  11. 2013年中国新媒体行业的八大趋势
  12. 在线JSON格式化-工具栈
  13. vue封装自定义数字键盘组件
  14. 苹果电脑MACbookAir快捷键大全
  15. socket通信函数
  16. 3-2 数制转换计算器
  17. 亚马逊常见的专业词汇你都知道吗?建议小白耐心看
  18. thinkphp 点击分类显示分类下的文章(完整)
  19. linux虚拟机安装sd卡,使用Vmware虚拟机安装RHEL 6.0
  20. html5 canvas 博客,html5 Canvas

热门文章

  1. Qt5.5中QTcpserver的注意细节(默认监听与IPv6格式等)
  2. STM32CubeMX实战教程(一)——软件入门
  3. 3733apk的服务器文件,3733游戏盒
  4. 判断当前页是否为最后一页
  5. 企业微信第三方扫码登录
  6. HAWQ技术解析(十八) —— 问题排查
  7. mac幻灯片放映快捷键_如何使用预览快速制作Mac照片幻灯片
  8. python王者战斗_可以玩的Python数据类型,一起成就“王者荣耀”的五杀
  9. JavaWeb环境搭建之配置Tomcat
  10. ajax同步请求的处理办法