小言_互联网的博客

Python爬虫5.4 — scrapy框架items模块的使用

542人阅读  评论(0)

Python爬虫5.4 — scrapy框架items模块的使用

综述

本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4

本篇我们来讲述items模块的用。

items 介绍

items主要目标是从非结构化来源(通常是网页)提取结构化数据。Scrap爬虫可以将提取的数据作为Python语句返回。虽然方便和熟悉,Python dicts缺乏结构:很容易在字段名称中输入错误或返回不一致的数据,特别是在与许多爬虫的大项目。要定义公共输出数据格式,Scrapy提供Item类。 Item对象是用于收集所抓取的数据的简单容器。它们提供了一个类似字典的 API,具有用于声明其可用字段的方便的语法。

各种Scrapy组件使用项目提供的额外信息:导出器查看声明的字段以计算要导出的列,序列化可以使用项字段元数据trackref定制,跟踪项实例以帮助查找内存泄漏(请参阅使用trackref调试内存泄漏)等。

声明定义

使用简单的类定义语法和Field对象来声明项目。示例代码如下(items.py):

import scrapy


class QsbkItem(scrapy.Item):
    # 定义item数据字段
    author = scrapy.Field()
    content = scrapy.Field()

使用items

实例代码如下:

import scrapy
# 引入items类
from qsbk.items import QsbkItem


class QsbkSpiderSpider(scrapy.Spider):
    name = 'qsbk_spider'
    allowed_domains = ['qiushibaike.com']
    start_urls = ['https://www.qiushibaike.com/text/page/1/']
    base_url = 'https://www.qiushibaike.com'

    def parse(self, response):
        # SelectorList
        # 解析页面
        content_left = response.xpath('//div[@id="content-left"]/div')
        # 提取数据
        for dz_div in content_left:
            # Selector
            author = dz_div.xpath(".//h2/text()").get().strip()
            content_tmp = dz_div.xpath(".//div[@class='content']//text()").getall()
            content = ''.join(content_tmp).strip()
            # 使用items进行返回
            item = QsbkItem(author=author, content=content)
            # 使用yield返回给pipline
            yield item

我们可以把定义的QsbkItem类理解成为是一个字典(当然它不是字典)。

使用items继续传递数据在获取到时候的时候,使用不同的items来存放不同的数据,然后把这个数据交给pipeline的时候,可以通过isinstance(item, MyspiderItem)来进行判断数据属于那个item,进行不同的数据处理(此部分在《Python爬虫笔记5.2 — scrapy框架pipline模块的使用》中已经讲解)。

其他博文链接


转载:https://blog.csdn.net/Zhihua_W/article/details/103970628
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场