使用scrapy爬取图片,自己处理下载和使用scrapy处理下载


  自己处理下载时不需要设置item.py,pipelines.py等这些文件,这些文件保持默认便可,只需要自己用css也好,xpath也好,获取到图片链接之后,使用常规的图片下载方法,下载图片即可,像下面这样:

        try:
            os.makedirs(root_path)
        except FileExistsError:
            pass
        r = requests.get(img_url, headers=headers)
        with open(root_path + img_name, 'wb') as f:
            f.write(r.content)

  就不多讲了,下面讲使用scrapy处理图片下载,下面的内容都是在你已经正确获取到了图片链接的前提下。

  

  首先,编写item.py文件:

class ImagesItem(scrapy.Item):
    file_name = scrapy.Field()
    img_urls = scrapy.Field()

  上面的file_name为文件保存路径,img_urls为图片下载的链接。

  然后爬虫主文件中实例化item:

        item = ImagesItem()
        item['file_name'] = root_path + img_name
        item['img_urls'] = img_url
        yield item

  接着就是处理下载的pipelines.py文件了:

class ImagePipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for img_url in item['img_urls']:
            yield Request(img_url, meta={'name': item['file_name']})

    def file_path(self, request, response=None, info=None):
        filename = request.meta['name']
        return filename

  之后就是在setting.py中启用ImagePipeline了:

IMAGES_STORE = 'D:\\'

ITEM_PIPELINES = {
   'images.pipelines.ImagePipeline': 300,
}

  注意这里的IMAGE_STORE是下载路径,会和上面的filename进行拼接,请确认自己设置的IMAGE_STORE和filename拼接出来的路径正确,如果没有意外,到这里运行爬虫之后已经可以正常爬取图片到设定的文件夹了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM