Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图

  • 1. 创建项目
  • 2. 使用ImagesPipeline爬取数据
    • items.py
    • setings.py
    • auto.py
    • start.py
  • 3. 总结

1. 创建项目

scrapy startproject AutoHome
cd AutoHome
scrapy genspider auto autohome.com.cn

2. 使用ImagesPipeline爬取数据

  • 可以在pipelines里边使用:
  • from scrapy.pipelines.images import ImagesPipeline
  • 查看ImagesPipeline源码

items.py

  • 注意:
  • ImagesPipeline要求必须在items里边设置image_urls和images
  • image_urls和images一定不要乱改,这与ImagesPipeline里的默认值保持一致
import scrapy
class AutohomeItem(scrapy.Item):# 图片的urlimage_urls = scrapy.Field()# 保存图片的路径images = scrapy.Field()pass

setings.py

  • 1.在settings里边打开ImagesPipeline,注意要关闭默认的pipeline

    ‘scrapy.pipelines.images.ImagesPipeline’:1

  • 2.在settings里边配置图片的保存路径,由于是动态路径,所以引入了os
  • 3.在settings里边设置IMAGES_STORE作为图片的存储目录
  • 4.动态存储路径一般用os.path.dir和__file__以及保存文件的文件夹名称拼接而成,或者也可以直接写死路径
BOT_NAME = 'AutoHome'SPIDER_MODULES = ['AutoHome.spiders']
NEWSPIDER_MODULE = 'AutoHome.spiders'
LOG_LEVEL = 'WARNING'
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
ITEM_PIPELINES = {# 'AutoHome.pipelines.AutohomePipeline': 300,'scrapy.pipelines.images.ImagesPipeline':1,
}
import os
IMAGES_STORE = os.path.join(os.path.dirname(os.path.dirname(__file__)),'image')

auto.py

  • 注意:
  • 与一般方式不同,ImagesPipeline的方式要求image_urls为列表[]
import scrapy
from AutoHome.items import AutohomeItem
class AutoSpider(scrapy.Spider):name = 'auto'allowed_domains = ['autohome.com.cn']start_urls = ['https://car.autohome.com.cn/photolist/series/41964/5143891.html#pvareaid=3454450']def parse(self, response):# print(response.text)lis = response.xpath('//ul[@id="imgList"]/li')# 实例化对象item = AutohomeItem()for li in lis:# 一般方式# item['img_src'] = 'https:' + li.xpath('./a/img/@src').extract_first()# 利用images pipeline的方式要求url为列表item['image_urls'] = ['https:' + li.xpath('./a/img/@src').extract_first()]yield item

start.py

from scrapy import cmdline# cmdline.execute(['scrapy','crawl','auto'])
cmdline.execute('scrapy crawl auto'.split())

3. 总结

  • 1.ImagesPipeline可以自动命名保存的文件,也可以解决下载文件重复的问题

    • 文件命采用的hashlib.sha1,结果为32位16进制数,除去文件类型.jpg的4位,其他部分为32位
  • 2.不用修改itempipeline就可以实现异步下载
  • 3.ImagesPipeline要求必须在items里边设置image_urls和images
  • 4.在settings里边打开ImagesPipeline,注意要关闭默认的pipeline
    • ‘scrapy.pipelines.images.ImagesPipeline’:1
  • 5.要求在settings里边设置IMAGES_STORE作为图片的存储目录
  • 6.ImagesPipeline的方式要求image_urls为列表[]

Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图相关推荐

  1. 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道

    现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...

  2. scrapy爬取汽车之家宝马5系图片

    需求分析 我们想在汽车之家官网上爬取宝马5系的部分图片,并根据分类保存到本地磁盘欣赏, 进入这个页面,分析发现,是按照多个维度进行分类的,因此我们要提取图片的时候,需要依次遍历没每个分类,然后在进入到 ...

  3. Python进阶之Scrapy-redis分布式爬虫抓取当当图书

    Python进阶之Scrapy-redis分布式爬虫抓取当当图书 1. 准备工作 1.1 安装scrapy-redis 1.2 在windows安装redis程序 1.3 打开redis服务 2. 需 ...

  4. python爬虫之scrapy初试与抓取链家成交房产记录

    接上一篇文章,本机安装好python之后和scrapy之后,我们开始学习使用scrapy创建爬虫程序. 今天先来点简单的,不那么复杂,先看看抓取链家网里面的房价信息. 首先使用CMD命令行进入F盘创建 ...

  5. [Python爬虫] 之十八:Selenium +phantomjs 利用 pyquery抓取电视之家网数据

    一.介绍 本例子用Selenium +phantomjs爬取电视之家(http://www.tvhome.com/news/)的资讯信息,输入给定关键字抓取资讯信息. 给定关键字:数字:融合:电视 抓 ...

  6. scrapy爬虫之爬取汽车之家奥迪Q7高清图片

    文章目录 前言 一.项目准备 1.安装scrapy 2.创建scrapy项目 3.创建scrapy爬虫 4.创建结果 5.修改配置 二.项目实现 1.分析网页 2.创建Item 3.编写爬虫 4.更改 ...

  7. 抓取汽车之家新闻资讯做安卓app新闻资讯数据

    //2016/09/16/// //by   xbw/// 抓取服务器端php源码 <?PHP set_time_limit(0); require("db_config.php&qu ...

  8. java 开发用到网络爬虫,抓取汽车之家网站全部数据经历

    经历了两个礼拜的折腾,某某知名网站的数据终于到手了.犯罪没被发现这种心情感觉很爽. 说一下我的犯罪经历,之前公司总是抓取某某网站数据,可能是被发现了.某某网站改变了策略.通过各种技术终止了我们的行为, ...

  9. Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息

    本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...

最新文章

  1. 从EXCHANGE03转移到EXCHANGE07
  2. Luogu P2580 于是他错误的点名开始了 Trie树 字典树
  3. I00014 汉若塔问题的C++程序
  4. 【跃迁之路】【706天】程序员高效学习方法论探索系列(实验阶段463-2019.1.26-27)...
  5. Xcode新建View Controller Scene并实现界面间跳转的方法
  6. 山东省德州市有哪些明星?
  7. WordPress更改“固定链接”后 ,页面出现404的解决方法
  8. Andorid连接USB打印机
  9. python中sqrt_Python中sqrt函数怎么用
  10. Xman的东西当然值钱了。每1单位高度的植物,就可以卖2美元,把减掉的植物都卖掉,就可以弥补罚单的损失了。你帮Xman计算一下一共可以卖多少钱。
  11. Linux系统安全及应用-grub菜单启用密码限制10
  12. winSCP 集成PuTTY附下载
  13. [linux][network]虚拟网卡技术分析
  14. 链路聚合VRRP(虚拟路由器冗余协议)
  15. abb工业机器人指令lf怎么用_史上最全的ABB工业机器人的指令介绍
  16. 脑机接口科普0009——侵入式与非侵入式的优缺点
  17. 通过MATLAB模拟24个GPS卫星的轨道运行效果
  18. 蓝桥杯 珠心算测验 C++算法提高 HERODING的蓝桥杯之路
  19. css入门教程资料(3)
  20. 计算机画大熊猫教学设计,大熊猫课堂教案设计

热门文章

  1. oracle 锁表、解锁的语句
  2. 用Markdown,3分钟搞定微信公众号文章排版!
  3. PTA-Python-第6章-2 一帮一 (15分)
  4. 三维视觉 | 01 摄像机原理及坐标系转换
  5. wce获取密码明文或者hashes
  6. “N刷”为何成为时尚
  7. OJ每日一练——有一门课不及格的学生
  8. 【复习回顾、继承、抽象类、模板设计模式】
  9. 通信行业名词术语解释
  10. 【报告分享】新国货彩妆洞察白皮书-蓝色光标(附下载)