如何使用scrapy的item来封装数据

简介: 如何使用scrapy的item来封装数据 我们是使用字典来对数据进行传递,使用字典有以下缺点。 无法直观地了解数据中包含哪些字段 缺乏对字段名字的检测 不便于携带元数据 为了克服上述问题,我们可以使用scrapy中自定义的item类封装爬取到的数据。

如何使用scrapy的item来封装数据

我们是使用字典来对数据进行传递,使用字典有以下缺点。

  1. 无法直观地了解数据中包含哪些字段
  2. 缺乏对字段名字的检测
  3. 不便于携带元数据

为了克服上述问题,我们可以使用scrapy中自定义的item类封装爬取到的数据。

spider.py文件

import  scrapy
from books.bookitem import BookItems

class BooksSpider(scrapy.Spider):

    name = "start"
    start_urls = ["http://books.toscrape.com/"]

    def parse(self, response):
        for book in response.css('article.product_pod'):
            name = book.xpath('./h3/a/@title').extract_first()
            price = book.css('p.price_color::text').extract_first()
            item = BookItems()
            item['name'] = name
            item['price'] = price
            yield item

        next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
        if next_url:
            next_url = response.urljoin(next_url)
            yield scrapy.Request(next_url , callback=self.parse)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

这里写图片描述

新建一个文件bookitem.py

from scrapy import Item,Field

class BookItems(Item):

    name = Field()
    price = Field()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看到运行结果如下: 
这里写图片描述
正确传送了name和price数据。

核心代码解读

item = BookItems() 
item[‘name’] = name 
item[‘price’] = price 
yield item

首先实例化BookItems,然后将解析得到的name和price传入给item,并用yield返回给引擎处理。 
注意,这里item的键是和定义的字段相对应的,如果写成item[‘names’] = name,会报错。

class BookItems(Item): 
name = Field() 
price = Field()

Item类是自定义数据类(BookItems)的基类,需要被自定义数据类继承。 
Field类是用来描述自定义数据类包含哪些字段,如name、price等。

小结

该篇简单介绍了Item基类和用来定义字段的Field类的用法,还有更多的用法以后再学习。

原文地址 https://blog.csdn.net/f156207495/article/details/81304906
相关文章
|
2月前
|
数据采集 存储 JSON
如何使用Scrapy提取和处理数据
如何使用Scrapy提取和处理数据
31 0
|
8月前
|
数据采集 JSON 前端开发
Python爬虫进阶:使用Scrapy库进行数据提取和处理
在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。
|
4月前
|
数据采集 中间件 Python
Scrapy框架 -- 结合selenium获取动态加载数据
Scrapy框架 -- 结合selenium获取动态加载数据
22 0
|
7月前
|
数据采集 中间件 Python
Scrapy框架 -- 结合selenium获取动态加载数据
Scrapy框架 -- 结合selenium获取动态加载数据
34 0
|
8月前
|
数据采集 存储 数据可视化
如何使用Scrapy框架抓取电影数据
如何使用Scrapy框架抓取电影数据
|
9月前
|
数据采集 XML 存储
构建一个简单的电影信息爬虫项目:使用Scrapy从豆瓣电影网站爬取数据
这个案例展示了如何使用 Scrapy 框架构建一个简单的爬虫项目,从网页中提取数据并保存到文件中。通过配置、编写爬虫代码、定义数据模型和数据处理管道,你可以灵活地构建各种爬虫应用。
216 0
构建一个简单的电影信息爬虫项目:使用Scrapy从豆瓣电影网站爬取数据
|
10月前
|
JSON 中间件 API
Scrapy中的parse命令:灵活处理CSV数据的多功能工具
Scrapy是一个用Python编写的开源框架,它可以快速地从网站上抓取数据。Scrapy提供了许多强大的功能,其中之一就是parse命令,它可以让你灵活地处理CSV数据。CSV(逗号分隔值)是一种常用的数据格式,它用逗号来分隔不同的字段。在本文中,我们将介绍parse命令的基本用法,以及它的一些亮点和案例。
107 0
Scrapy中的parse命令:灵活处理CSV数据的多功能工具
|
11月前
|
数据采集 开发者 Python
如何使用Scrapy框架爬取301跳转后的数据
如何使用Scrapy框架爬取301跳转后的数据
|
Python 容器
使用 Scrapy 框架来爬取数据
创建一个 Scrapy 项目,项目文件可以直接用 scrapy 命令生成,命令如下所示:scrapy startproject doubanmovie250 这个命令可以在任意文件夹运行。如果提示权限问题,可以加 sudo 运行该命令。
206 0
|
JSON 数据格式 Python
一日一技:Scrapy 如何正确 Post 发送 JSON 数据
一日一技:Scrapy 如何正确 Post 发送 JSON 数据
789 0
一日一技:Scrapy 如何正确 Post 发送 JSON 数据