1. Spider程序:

  

 1 import scrapy, json
2 from UnsplashImageSpider.items import ImageItem
3
4 class UnsplashImageSpider(scrapy.Spider):
5 # 定义Spider的名称
6 name = 'unsplash_image'
7 allowed_domains = ['unsplash.com']
8 # 定义起始页面
9 start_urls = ['https://unsplash.com/napi/photos?page=1&per_page=12']
10 def __init__ (self):
11 self.page_index = 1
12
13 def parse(self, response):
14 # 解析服务器响应的JSON字符串
15 photo_list = json.loads(response.text) # ①
16 # 遍历每张图片
17 for photo in photo_list:
18 item = ImageItem()
19 item['image_id'] = photo['id']
20 item['download'] = photo['links']['download']
21 yield item
22
23 self.page_index += 1
24 # 获取下一页的链接
25 next_link = 'https://unsplash.com/napi/photos?page='\
26 + str(self.page_index) + '&per_page=12'
27 # 继续获取下一页的图片
28 yield scrapy.Request(next_link, callback=self.parse)

2. 在Pipeline中使用urllib.request包直接下載圖片:

 1 from urllib.request import *
2
3 class UnsplashimagespiderPipeline(object):
4 def process_item(self, item, spider):
5 # 每个item代表一个要下载的图片
6 print('----------' + item['image_id'])
7 real_url = item['download'] + "?force=true"
8 try:
9 pass
10 # 打开URL对应的资源
11 with urlopen(real_url) as result:
12 # 读取图片数据
13 data = result.read()
14 # 打开图片文件
15 with open("images/" + item['image_id'] + '.jpg', 'wb+') as f:
16 # 写入读取的数据
17 f.write(data)
18 except:
19 print('下载图片出现错误' % item['image_id'])
 

Scrapy——將爬取圖片下載到本地的更多相关文章

  1. php圖片中寫入字符串然後生成圖片下載到本地

    <?php /** * 生成卡片得類 * Enter description here ... * @author perry * @time 2014-03-03 10:02:20 */ cl ...

  2. 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息

    简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...

  3. 使用scrapy框架爬取自己的博文(2)

    之前写了一篇用scrapy框架爬取自己博文的博客,后来发现对于中文的处理一直有问题- - 显示的时候 [u'python\u4e0b\u722c\u67d0\u4e2a\u7f51\u9875\u76 ...

  4. Python的scrapy之爬取链家网房价信息并保存到本地

    因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 ​ 爬虫结构: ​ 其中封装了一个数据库处理模 ...

  5. 爬虫框架Scrapy入门——爬取acg12某页面

    1.安装1.1自行安装python3环境1.2ide使用pycharm1.3安装scrapy框架2.入门案例2.1新建项目工程2.2配置settings文件2.3新建爬虫app新建app将start_ ...

  6. Scrapy+selenium爬取简书全站

    Scrapy+selenium爬取简书全站 环境 Ubuntu 18.04 Python 3.8 Scrapy 2.1 爬取内容 文字标题 作者 作者头像 发布日期 内容 文章连接 文章ID 思路 分 ...

  7. 爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

    爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy ...

  8. 【Scrapy(四)】scrapy 分页爬取以及xapth使用小技巧

    scrapy 分页爬取以及xapth使用小技巧 这里以爬取www.javaquan.com为例: 1.构建出下一页的url: 很显然通过dom树,可以发现下一页所在的a标签   2.使用scrapy的 ...

  9. python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)

    页面翻页,下一页可能是一个新的url 也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页 目标:爬取同一个url下不同页的数据(上述第二种情况) url:http://www. ...

随机推荐

  1. Docker教程:使用Docker容器运行Nginx并实现反向代理

    一.前言 我们知道,为了安全考虑,我们一般会设置反向代理,用来屏蔽应用程序真实的IP和端口号.在Linux系统上最常用的反向代理就是Nginx.本篇文章中,我们会通过Docker容器分别运行一个Ngi ...

  2. mysql中sql行列转换

    1.列转行 select class_id,MAX(CASE kemu when '语文' then score ELSE 0 end)as '语文' ,MAX(CASE kemu when '数学' ...

  3. 运行命令区分webpack环境,以及axios数据请求的封装

    在开发环境和线上环境时,由于环境的不同,有时候需要修改一定的代码,可以通过配置webpack环境来减少对代码的修改:另外,有时候去看别人的代码,你可能都找不到他的数据请求在什么位置,最近在做一个vue ...

  4. 简单web页面第一步---表单

    1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncod ...

  5. 关于Iterator

    1.在迭代过程中,用list来删除元素的坑 1 package test; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 ...

  6. WebService 适用场合

    适用场合 1.跨防火墙通信 如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题.因为客户端和服务器之间通常会有防火墙或者代理服 务器.在这种情况下,使用D ...

  7. 今天写了一个SSM小项目,运行之后,前端页面的CSS、js样式显示不出来,具体操作如下:

    因为SSM中我们设置了拦截器,拦截器会拦截CSS和JS,所有样式渲染不出来,在Web.xml中写上 1 <servlet-mapping> 2 <servlet-name>de ...

  8. Spring Cloud Sleuth链路监控应用(十四)

    https://docs.spring.io/spring-cloud-sleuth/docs/2.2.5.RELEASE/reference/html/ 一.Sleuth介绍   为什么要使用微服务 ...

  9. 每日一个linux命令6 -- rmdir

    rmdir doc 如果doc为空目录则删除,否则无法删除. rmdir -p test2/test3 递归删除空目录,首先判断test3,如果test3为空,则删除test3,此时判断test2,如 ...

  10. java操作HDFS相关demo(TDH,kerberos认证)

    public class Test {     private static Configuration conf;     private static FileSystem fs;     //开 ...