首页 > 其他 > 详细

scrapy图片数据爬取

时间:2020-07-27 23:55:21      阅读:126      评论:0      收藏:0      [点我收藏+]

scrapy中已经为我们封装好了一个专门基于图片请求和持久化存储的管道类ImagesPipeline,如果想要基于scrapy实现图片数据的爬取,则可以直接使用该管道类即可

在配置文件中进行如下配置:
IMAGES_STORE = ‘./imgs’:表示最终图片存储的目录

爬虫文件

import scrapy
from learn_scrapy.items import LearnScrapyItem


class ImgcrawlSpider(scrapy.Spider):
    name = ‘imgcrawl‘
    # allowed_domains = [‘www.xxx.com‘]
    start_urls = [‘http://sc.chinaz.com/tupian/‘]

    def parse(self, response):
        div_ls = response.xpath(‘//*[@id="container"]/div‘)
        for div in div_ls:
            #只需要将img的src属性值进行解析,提交到管道,管道就会对图片的src进行请求发送获取图片的二进制数据并进行持久化存储
            src = div.xpath(‘./div/a/img/@src2‘).extract_first()

            item = LearnScrapyItem()

            item[‘src‘] = src

            yield item

管道文件

from itemadapter import ItemAdapter
from scrapy.pipelines.images import ImagesPipeline
import scrapy


#ImagesPipeline专门用于文件下载的管道类,下载过程支持异步和多线程
class ImgPipeLine(ImagesPipeline):
      #对item中的图片进行请求操作
      def get_media_requests(self, item, info):
          yield scrapy.Request(item[‘src‘])
      #定制图片的名称
      def file_path(self, request, response=None, info=None):
          url = request.url
          file_name = url.split(‘/‘)[-1]
          return file_name
      def item_completed(self, results, item, info):
          return item  #该返回值会传递给下一个即将被执行的管道类

scrapy图片数据爬取

原文:https://www.cnblogs.com/bibicode/p/13386877.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!