文档章节

Scrapy items的介绍与使用

西米火山
 西米火山
发布于 2017/05/09 23:57
字数 610
阅读 37
收藏 0

Items

爬虫的主要目的就是从非数据结构性的数据源提取结构性的数据源,例如:在《Scrapy爬虫初步尝试》这篇博客中,我们已经爬取到了伯乐在线,所有的文章信息(从中爬取了文章的创建时间,标题,评论数,点赞数,收藏数等相关字段)。如何返回提取的数据呢?Scrapy可以以Python的dict来返回提取的数据,虽然这样很方便,用起来也很方便,但其缺少结构性,比如:我们在爬取伯乐在线的时候,收藏数用的是mark_num,但是,在爬取另外一个网站时用到的是fav_num,这样就很容易造成返回的数据不一致的问题。

为了定义常用的输出数据,Scrapy提供了Item类。Item对象是种简单的容器,保存了爬取得到的数据。其提供了类似于字典的API以及用于声明可用字段的简单语法。

除此之外,Scrapy组件使用了Item提供的额外信息:exporter根据Item声明的字段来导出数据、序列化可以通过Item的元数据(metadata)来定义、trackref追踪Item的实例来帮助寻找内存泄露。

  1. 声明Item(Item使用简单的class定义语法以及Field对象来声明)。例如:

还是以jobbole爬取来说明,保存我们在伯乐在线爬取到的相关数据。

class ArticleItem(scrapy.Item):
    title = scrapy.Field()  #文章标题
    create_date = scrapy.Field()  #创建日期
    url = scrapy.Field()   #url
    url_object_id = scrapy.Field()  #url的md5值
    front_image_url = scrapy.Field() #封面图路径
    front_image_path = scrapy.Field() #本地保存路径
    parse_num = scrapy.Field()  #点赞数
    mark_num = scrapy.Field()  #收藏数
    comments_num = scrapy.Field() #评论数
    tags = scrapy.Field()  #标签
    content = scrapy.Field()  #文章内容

关于Field对象:Field对象指明了每个对象的元数据(metadata)。可以为每个字段指明任何类型的元数据。需要注意的是,用来声明item的Field对象并没有被赋值class的属性。不过可以通过Item.fields属性进行访问。

  1. 实例化一个item对象
#实例化一个item对象
article_item = JobboleArticleItem()
  1. 为item对象赋值
article_item["title"] = title
article_item["create_date"] = create_date
article_item["url"] = response.url
article_item["front_image_url"] = img_url
article_item["praise_num"] = praise_num
article_item["mark_num"] = mark_num
article_item["comments_num"] = comments_num
article_item["tags"] = tags
article_item["content"] = content
  1. 获取字段的值
article_item["title"]
article_item.get("title","")

1.获取所有取到的值

article_item.keys()
article_item.items()

© 著作权归作者所有

上一篇: Servlet学习基础
西米火山
粉丝 4
博文 21
码字总数 26957
作品 0
武汉
程序员
私信 提问
使用Python的Scrapy框架编写web爬虫的简单示例

在这个教材中,我们假定你已经安装了Scrapy。假如你没有安装,你可以参考这个安装指南。 我们将会用开放目录项目(dmoz)作为我们例子去抓取。 这个教材将会带你走过下面这几个方面: 创造一个新的...

Airship
2016/04/09
118
1
Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理

本文出自“python修行路”博客,http://www.cnblogs.com/zhaof/p/7173397.html 这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行...

zhangliu463884153
2018/04/21
0
0
Scrapy入门教程

在这篇入门教程中,我们假定你已经安装了Scrapy。如果你还没有安装,那么请参考安装指南。 我们将使用开放目录项目(dmoz)作为抓取的例子。 这篇入门教程将引导你完成如下任务: 创建一个新的...

涩女郎
2016/08/27
23
0
Python爬虫Scrapy(二)_入门案例

本章将从案例开始介绍python scrapy框架,更多内容请参考:python学习指南 入门案例 学习目标 创建一个Scrapy项目 定义提取的结构化数据(Item) 编写爬取网站的Spider并提取出结构化数据(Item...

小七奇奇
2017/12/26
0
0
Python实现电影排行榜自动网盘下载(2)Scrapy深入 “打包员”“快递员”

本文参考学习 博主崔庆才的系列教程 Scrapy教程 上一篇文章当中我们获得了电影的名字,来想想平时我们下小电影是怎么下的? 那还不是轻车熟路吗??扔到BT搜索引擎里面查磁力链接再去离线下载...

Seeker_zz
2017/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Django笔记-3-模型-20190526

简介 django为各种数据库提供了很好的支持,django对这些数据库提供了统一的调用API;可以根据不同的也无需求选择不同的数据库; 配置数据库 在setting.py文件中配置数据库 DATABASES = { ...

Frank1126lin
34分钟前
2
0
OSChina 周日乱弹 —— 程序员做噩梦

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 手嶌葵《Kiss The Girl》 《Kiss The Girl》- 手嶌葵 手机党少年们想听歌,请使劲儿戳(这里) @Sharon啊 :今天...

小小编辑
今天
149
10
Another app is currently holding the yum lock; waiting for it to exit...

Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 153 M RSS (266 MB VSZ) Started: Thu Jul 12 00:03......

圣洁之子
今天
2
0
FastDateFormat 研究

FastDateFormat 对缓存的利用,其实就是用ConcurrentHashMap 做了一个map类型的缓存 public F getInstance(final String pattern, TimeZone timeZone, Locale locale) { Validate......

暗中观察
今天
4
0
Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部