利用Python的scrapy下载图片

利用scrapy 来爬取数据会更加的快捷方便,使用很少的代码量就可以完成想要的操作,今天就分享一下运用scrapy下载图片的使用方法

首先我们先要准备一个我们需要爬取图片的网站,然后根据前几篇微博的介绍创建好文件夹,如下

然后我们打开image.py文件 ,进入编写页面

 然后改正自己需要爬取的网页的正确的链接地址,然后获取响应

然后运用爬虫知识获取到自己需要的内容,我们这次的目的是为了下载图片,所以要有一个前提,,我们需要进入到下面这个文件里

然后找到以下内容进行更改

 然后根据爬虫知识获取自己想要获取的东西

import scrapy

from ..items import ImagenetItem
class ImageSpider(scrapy.Spider):
    name = 'image'
    allowed_domains = ['pic.netbian.com']
    # 请求最开始的url
    start_urls = ['http://pic.netbian.com/4kmeishi/']
    # netbian.com
    def parse(self, response):
        # 根据响应,来找到指定的内容,现在找的是img的src属性
        img_list = response.xpath('//ul[@class="clearfix"]/li/a/img/@src')
        print(img_list)
        # 找到了很多src属性值,现在开始遍历 分别使用每一个
        for img in img_list:
            # 使用在items.py创建的数据模型item
            item = ImagenetItem()
            # 拼接url得到完整的下载地址
            src = 'http://pic.netbian.com'+ img.extract()
            print(src)
            # 将得到的下载地址,放入到数据模型中
            # ValueError: Missingscheme in request url: h
            # 下载地址要包在列表当中
            # item['src'] = src
            item['src'] = [src]
            # 将数据模型传输给管道
            yield item

            next_url = response.xpath('//div[@class="page"]/a[text()="下一页"]/@href').extract()
            if len(next_url) !=0 :
                url = 'http://pic.netbian.com'+next_url[0]
                # 将url传给scrapy.Request 得到的结果继续用self.parse处理
                yield scrapy.Request(url=url,callback=self.parse)

值得注意的是以下几点的书写需要在 items.py文件中进行一些操作

找到items.py文件进入然后进行编辑

import scrapy


class ImagenetItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    src = scrapy.Field()
    pass

做完这些工作在终端运行代码就可以成功下载图片了

猜你喜欢

转载自blog.csdn.net/weixin_42539547/article/details/81366126