如何使用scrapy的item来封装数据
引言
在第一篇如何写第一个scrapy里面,我们是使用字典来对数据进行传递,使用字典有以下缺点。
- 无法直观地了解数据中包含哪些字段
- 缺乏对字段名字的检测
- 不便于携带元数据
为了克服上述问题,我们可以使用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来封装数据相关推荐
- Scrapy从入门到精通(3)--使用Item封装数据
使用Item封装数据 前两篇博客介绍了从页面中提取数据的方法,现在用item封装爬取到的数据 Item和Field Scrapy提供了Item和Field类,可以用他们自定义数据类,封装爬取到的数据 ...
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...
- 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?
Python Scrapy如何实现多页数据爬取? 发布时间:2020-06-23 11:47:46 来源:亿速云 阅读:112 作者:清晨 这篇文章将为大家详细讲解有关Python Scrapy如何实 ...
- python爬取京东手机数据_用scrapy爬取京东的数据
本文目的是使用scrapy爬取京东上所有的手机数据,并将数据保存到MongoDB中. 一.项目介绍 主要目标 1.使用scrapy爬取京东上所有的手机数据 2.将爬取的数据存储到MongoDB 环境 ...
- Scrapy爬虫框架管道文件pipelines数据图像存储
Scrapy爬虫框架管道文件pipelines Scrapy爬虫框架管道文件pipelines 一.pipelines的通用性 二.pipelines的主要功能 1.对数据进行后处理,清洗,去重,融合 ...
- Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Scrapy爬虫,请先准备好Scrapy的环境 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 启动爬虫 获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫 ...
- python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...
- Scrapy入门教程(2)——保存数据
爬取股票名称.每股利润和净利润 完整项目已上传至github 链接:https://github.com/yinhaox/02_scrapy 数据爬取 可以接着之间的项目改,也可以重建一个 图一网页截 ...
- Scrapy爬虫,华为商城商品数据爬虫demo
来自于华为云开发者大会,使用Python爬虫抓取图片和文字实验,应用Scrapy框架进行数据抓取,保存应用了mysql数据库,实验采用的是线上服务器,而这里照抄全是本地进行,如有不同,那肯定是本渣渣瞎 ...
最新文章
- 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一
- idea设置自动编译
- Node.js 初识 fs 模块
- C++实现线段树求区间和-区间查询
- 解放你的双手-Sql Server 2000智能提示工具[破解版]
- JavaScript内存那点事
- 每天一点正则表达式积累(三)
- 简易vbs脚本实现在浏览器自动刷新网页。
- APP界面常用的五种颜色搭配
- Lucene学习总结之一:全文检索的基本原理
- 2012年春节放假通知
- 在excell中如何制作动态图
- 【C/C++】静态顺序表详解(附完整源码)
- Linux从零学习记录(三)
- 怎样将计算机引入计算教学中,计算教学学习心得
- itss认证条件是什么?
- Web报表系统葡萄城报表:财务报表分析
- 往事如烟 - 老钟11
- MySqlException(0x80004005) 报错
- 我真的改变了很多,QQ群里同学们说的