Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图
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系缩略图相关推荐
- 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道
现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...
- scrapy爬取汽车之家宝马5系图片
需求分析 我们想在汽车之家官网上爬取宝马5系的部分图片,并根据分类保存到本地磁盘欣赏, 进入这个页面,分析发现,是按照多个维度进行分类的,因此我们要提取图片的时候,需要依次遍历没每个分类,然后在进入到 ...
- Python进阶之Scrapy-redis分布式爬虫抓取当当图书
Python进阶之Scrapy-redis分布式爬虫抓取当当图书 1. 准备工作 1.1 安装scrapy-redis 1.2 在windows安装redis程序 1.3 打开redis服务 2. 需 ...
- python爬虫之scrapy初试与抓取链家成交房产记录
接上一篇文章,本机安装好python之后和scrapy之后,我们开始学习使用scrapy创建爬虫程序. 今天先来点简单的,不那么复杂,先看看抓取链家网里面的房价信息. 首先使用CMD命令行进入F盘创建 ...
- [Python爬虫] 之十八:Selenium +phantomjs 利用 pyquery抓取电视之家网数据
一.介绍 本例子用Selenium +phantomjs爬取电视之家(http://www.tvhome.com/news/)的资讯信息,输入给定关键字抓取资讯信息. 给定关键字:数字:融合:电视 抓 ...
- scrapy爬虫之爬取汽车之家奥迪Q7高清图片
文章目录 前言 一.项目准备 1.安装scrapy 2.创建scrapy项目 3.创建scrapy爬虫 4.创建结果 5.修改配置 二.项目实现 1.分析网页 2.创建Item 3.编写爬虫 4.更改 ...
- 抓取汽车之家新闻资讯做安卓app新闻资讯数据
//2016/09/16/// //by xbw/// 抓取服务器端php源码 <?PHP set_time_limit(0); require("db_config.php&qu ...
- java 开发用到网络爬虫,抓取汽车之家网站全部数据经历
经历了两个礼拜的折腾,某某知名网站的数据终于到手了.犯罪没被发现这种心情感觉很爽. 说一下我的犯罪经历,之前公司总是抓取某某网站数据,可能是被发现了.某某网站改变了策略.通过各种技术终止了我们的行为, ...
- Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息
本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...
最新文章
- 从EXCHANGE03转移到EXCHANGE07
- Luogu P2580 于是他错误的点名开始了 Trie树 字典树
- I00014 汉若塔问题的C++程序
- 【跃迁之路】【706天】程序员高效学习方法论探索系列(实验阶段463-2019.1.26-27)...
- Xcode新建View Controller Scene并实现界面间跳转的方法
- 山东省德州市有哪些明星?
- WordPress更改“固定链接”后 ,页面出现404的解决方法
- Andorid连接USB打印机
- python中sqrt_Python中sqrt函数怎么用
- Xman的东西当然值钱了。每1单位高度的植物,就可以卖2美元,把减掉的植物都卖掉,就可以弥补罚单的损失了。你帮Xman计算一下一共可以卖多少钱。
- Linux系统安全及应用-grub菜单启用密码限制10
- winSCP 集成PuTTY附下载
- [linux][network]虚拟网卡技术分析
- 链路聚合VRRP(虚拟路由器冗余协议)
- abb工业机器人指令lf怎么用_史上最全的ABB工业机器人的指令介绍
- 脑机接口科普0009——侵入式与非侵入式的优缺点
- 通过MATLAB模拟24个GPS卫星的轨道运行效果
- 蓝桥杯 珠心算测验 C++算法提高 HERODING的蓝桥杯之路
- css入门教程资料(3)
- 计算机画大熊猫教学设计,大熊猫课堂教案设计