Python scrapy爬取图片管道重温之爬取唯美壁纸

16 篇文章 0 订阅
3 篇文章 0 订阅
本文重温了使用Scrapy爬取图片的过程,特别是rules的用法,揭示了它可以用于抓取下级页面的链接。通过调整规则顺序,实现了从主页面到下级页面的深度爬取。在最终页面中提取URL,通过图像管道下载并存储图片。设置包括修改User-Agent和启用图像管道。经过实践,成功爬取了enterdesk网站的唯美壁纸。
摘要由CSDN通过智能技术生成

重温了一下爬取图片的管道,同时发现了-t crawl格式的新用法,特意记录下来,爬取网站是 enterdesk。

说道新用法,主要是rules的用法,之前一直以为rule只能管理当前页,不能提取下级下下级的链接,还是 too young, sometimes naive, 嘿嘿。

rules是可以支持下级页面的爬取的,但是建议将主页面放在最下,次级页面次之,最下级页面最上,也就是反过来排序,如下面的代码。
当前我们只需要在最下级页面中提取url字段并拿给图像管道,因此,只需要一个parse函数即可。

爬虫文件

# -*- coding: utf-8 -*-
import scrapy

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from ..items import Wallpaper2Item


class PrettySpider(CrawlSpider):
    name = 'pretty'
    allowed_domains = ['www.enterdesk.com']
    start_urls = ['https://www.enterdesk.com/special/wmtp/']

    rules = (
        Rule(LinkExtractor(allow=r'//www\.enterdesk\.com/download/\d+-\d+/'), callback='parse_item', follow=False),
        # 下载页找图片地址,需要解析callback
        Rule(LinkExtractor(allow=r'/bizhi/\d+-\d+\.html'), follow=True),
        # # 详情页找下载页,不需要callback
        Rule(LinkExtractor(allow=r'https://www\.enterdesk\.com/bizhi/\d+.html'), follow=True),
        # 详情页,不需要callback
    )



    def parse_item(self, response):
        item = Wallpaper2Item()
        item['image_urls'] = response.xpath('//img[@id="down_main_pic"]/@src').extract()
        print(item)
        yield item

setting中需要修改一下ua,以及开启图像管道,存储图像的位置

LOG_LEVEL = "WARNING"
DOWNLOAD_DELAY = 2
ITEM_PIPELINES = {
   # 'wallpaper2.pipelines.Wallpaper2Pipeline': 300,
    'scrapy.pipelines.images.ImagesPipeline':300,
    # from scrapy.pipelines.images import ImagesPipeline 可以这样找imagespipeline的位置
}

IMAGES_STORE = 'img'

items中开启

import scrapy


class Wallpaper2Item(scrapy.Item):
    # define the fields for your item here like:
    image_urls = scrapy.Field()
    images = scrapy.Field()

无需更多定制即可开爬,结果如下:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值