引言

在第一篇如何写第一个scrapy里面,我们是使用字典来对数据进行传递,使用字典有以下缺点。

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

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

spider.py文件

import  scrapy
from books.bookitem import BookItemsclass 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'] = nameitem['price'] = priceyield itemnext_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)

新建一个文件bookitem.py

from scrapy import Item,Field

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

可以看到运行结果如下:

正确传送了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类的用法,还有更多的用法以后再学习。

如何使用scrapy的item来封装数据相关推荐

  1. Scrapy从入门到精通(3)--使用Item封装数据

    使用Item封装数据 前两篇博客介绍了从页面中提取数据的方法,现在用item封装爬取到的数据 Item和Field Scrapy提供了Item和Field类,可以用他们自定义数据类,封装爬取到的数据 ...

  2. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  3. 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?

    Python Scrapy如何实现多页数据爬取? 发布时间:2020-06-23 11:47:46 来源:亿速云 阅读:112 作者:清晨 这篇文章将为大家详细讲解有关Python Scrapy如何实 ...

  4. python爬取京东手机数据_用scrapy爬取京东的数据

    本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...

  5. Scrapy爬虫框架管道文件pipelines数据图像存储

    Scrapy爬虫框架管道文件pipelines Scrapy爬虫框架管道文件pipelines 一.pipelines的通用性 二.pipelines的主要功能 1.对数据进行后处理,清洗,去重,融合 ...

  6. Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    Scrapy爬虫,请先准备好Scrapy的环境 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 启动爬虫 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫 ...

  7. python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析

    这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...

  8. Scrapy入门教程(2)——保存数据

    爬取股票名称.每股利润和净利润 完整项目已上传至github 链接:https://github.com/yinhaox/02_scrapy 数据爬取 可以接着之间的项目改,也可以重建一个 图一网页截 ...

  9. Scrapy爬虫,华为商城商品数据爬虫demo

    来自于华为云开发者大会,使用Python爬虫抓取图片和文字实验,应用Scrapy框架进行数据抓取,保存应用了mysql数据库,实验采用的是线上服务器,而这里照抄全是本地进行,如有不同,那肯定是本渣渣瞎 ...

最新文章

  1. 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一
  2. idea设置自动编译
  3. Node.js 初识 fs 模块
  4. C++实现线段树求区间和-区间查询
  5. 解放你的双手-Sql Server 2000智能提示工具[破解版]
  6. JavaScript内存那点事
  7. 每天一点正则表达式积累(三)
  8. 简易vbs脚本实现在浏览器自动刷新网页。
  9. APP界面常用的五种颜色搭配
  10. Lucene学习总结之一:全文检索的基本原理
  11. 2012年春节放假通知
  12. 在excell中如何制作动态图
  13. 【C/C++】静态顺序表详解(附完整源码)
  14. Linux从零学习记录(三)
  15. 怎样将计算机引入计算教学中,计算教学学习心得
  16. itss认证条件是什么?
  17. Web报表系统葡萄城报表:财务报表分析
  18. 往事如烟 - 老钟11
  19. MySqlException(0x80004005) 报错
  20. 我真的改变了很多,QQ群里同学们说的

热门文章

  1. php7-sapnwrfc
  2. 关于自定义程序的效能优化
  3. 七步确定一个优化项目的难易度
  4. 电商ERP vs.传统ERP,有何不一样?
  5. ABAP模块P类型详细解释
  6. I don't have an E-mail 我没邮箱
  7. 使用AT SELECTION-SCREEN事件验证用户输入条件的反思
  8. 报表需求源源不断?手把手教你提升报表通用性
  9. 结婚率连7年下降,数据揭秘单身背后复杂逻辑
  10. android 多屏幕 设计翻译,android Supporting multiple screen翻译一