十二、Scrapy框架–实战–zcool网站精选图高速下载(1)
下载图片文件
1、Scrapy框架下载文件(包括图片)有自己的一套解决方案,比我们直接使用urlretrieve更加有优势。
2、避免重新下载最近已经下载过的文件。
3、可以方便的指定文件存储的路径。
4、可以将下载的图片转换成通用的格式。比如png或jpg。
5、可以方便的生成缩略图。
6、可以方便的检测图片的宽与高,确保他们满足最小限制。
7、异步下载,效率非常高。
8、更多:https://doc.scrapy.org/en/latest/topics/media-pipeline.html
下载图片文件 - 站酷图片下载实战
1、定义一个 item,上面有两个字段,一个是 image_urls,一个是 images。其中 images_urls 是用来存储图片的链接,由开发者把数据爬取下来后添加的。
2、使用 scrapy.pipelines.images.ImagesPipeline 来作为数据保存的 pipeline。
3、在 settings.py 中设置 IMAGES_STORE 来定义图片下载的路径。
4、如果想要有更复杂的图片保存的路径需求,可以重写 ImagePipeline 的 file_path 方法,这个方法用来返回每个图片的保存路径。
zcool.py 示例代码
import scrapy
from scrapy.spiders.crawl import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class ZcoolSpider(CrawlSpider):
name = 'zcool'
allowed_domains = ['zcool.com.cn']
start_urls = ['http://zcool.com.cn/']
rules = (
#翻页的url
Rule(LinkExtractor(allow=".+0!0!0!0!0!!!!2!0!\d+"),follow=True),
#详情页面的url
Rule(LinkExtractor(allow=".+/work/.+html"), follow=False,callback="parse_detail")
)
def parse_detail(self, response):
image_urls =response.xpath("//div[@class='reveal-work-wraptext-center']//img/@src").getall()
title_list =response.xpath("//div[@class='details-contitle-box']/h2/text()").getall()
title ="".join(title_list).strip()
上一篇文章 第六章 Scrapy框架(十一) 2020-03-13 地址:
https://www.jianshu.com/p/5a4b5bc44a99
下一篇文章 第六章 Scrapy框架(十三) 2020-03-15 地址:
https://www.jianshu.com/p/23a56b78deee
以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。