zoukankan      html  css  js  c++  java
  • Scrapy 爬虫模板--XMLFeedSpider

    XMLFeedSpider 主要用于 RSS 的爬取。RSS 是基于 XML 的信息局和技术。这篇文章的最后一下小结我会利用爬取经济观察网 RSS 的例子来讲解它的具体用法。现在我们先看一下 XMLFeedSpider 的常用属性。

    零、常用属性

    1. iterator:迭代器,主要用来分析 RSS 源,可用的迭代器有三种:
    • iternode:高性能的正则表达式迭代器,是默认迭代器
    • html:加载所有的 DOM 结构进行分析,但是如果数据量巨大会产生性能问题。唯一的优点是处理不合理的标签会很有用
    • xml:和 html 迭代器类似。
    1. itertag:指定需要迭代的节点
    2. namespaces:定义处理文档时所需要使用的命名空间。

    一、常用方法

    1. adapt_response(response):在处理分析 Response 前触发,主要用于修改 Response 的内容,返回类型为 Response 。
    2. parse_node(response,selectot):怕渠道匹配的节点时触发这个方法处理数据。这个方法必须在项目代码中实现,否则爬虫不工作,并且必须返回 Item、Request 或者包含二者的迭代器。
    3. process_result(response,result):返回爬取结果时触发,用于将爬取结果传递给框架核心处理前来做最后的修改。

    案例

    下面我们通过爬取经济观察网的 RSS 来看看 XMLFeedSpider 在实战中怎么用。首先我们来看一下经济观察网的 RSS 结构:
    在这里插入图片描述

    从图中可以看出对我们有用的信息都位于 item 标签之间,那么这个标签之间的内容就是我们需要抓取的东西,这个标签被称为节点。

    # -*- coding: utf-8 -*-
    from scrapy.spiders import XMLFeedSpider
    from ..items import RsshubItrem
    
    
    class RsshubSpider(XMLFeedSpider):
        name = 'rsshub'
        allowed_domains = ['rsshub.app']
        start_urls = ['https://rsshub.app/eeo/01']
        iterator = 'iternodes'
        itertag = 'item'
    
        def parse_node(self, response, selector):
            item = RsshubItrem()
            item['title'] = selector.css("title::text").extract_first()
            item['public_date'] = selector.css("publicDate::text").extract_first()
            item['link'] = selector.css("link::text").extract_first()
            return item
    
            import scrapy
    
    
    class RsshubItrem(scrapy.Item):
        title = scrapy.Field()
        public_date = scrapy.Field()
        link = scrapy.Field()
    
    
  • 相关阅读:
    【C#语言规范版本5.0学习】2 词法结构(一、简述)
    【C#语言规范版本5.0学习】1.11 特性
    TP5.1 实现超时未支付订单自动关闭
    tp5.1使用队列
    开启队列时,命令行输入php think queue:listen出现乱码
    mysql 查询分组后的总条数
    处理mysql先排序在分组
    mysql 5.7 sql_mode设置 坑
    Windows 版 SourceTree 免登录跳过初始设置的方法和下载地址
    thinkphp5.1-jwt的安装与使用
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778110.html
Copyright © 2011-2022 走看看