博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scrapy items的介绍与使用
阅读量:5967 次
发布时间:2019-06-19

本文共 1637 字,大约阅读时间需要 5 分钟。

hot3.png

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"] = titlearticle_item["create_date"] = create_datearticle_item["url"] = response.urlarticle_item["front_image_url"] = img_urlarticle_item["praise_num"] = praise_numarticle_item["mark_num"] = mark_numarticle_item["comments_num"] = comments_numarticle_item["tags"] = tagsarticle_item["content"] = content
  1. 获取字段的值
article_item["title"]article_item.get("title","")

1.获取所有取到的值

article_item.keys()article_item.items()

转载于:https://my.oschina.net/u/2968127/blog/896318

你可能感兴趣的文章
ubuntu安装VNC、Xfce桌面
查看>>
浅析支付系统的整体架构
查看>>
二位数组
查看>>
unix文件权限
查看>>
Python 模拟鼠键
查看>>
2017-2018-2 20155224『网络对抗技术』Exp7:网络欺诈防范
查看>>
Source Code Review
查看>>
分享一下我安装启动Jmeter出错时的解决办法
查看>>
java 调用process
查看>>
用a标签实现submit提交按钮的效果
查看>>
毕向东_Java基础视频教程第20天_IO流(1~4)
查看>>
几图理解BeautifulSoup
查看>>
HashMap内部是如何实现的(转)
查看>>
交互设计[3]--点石成金
查看>>
java实现双向循环链表
查看>>
如何使用缓存提高程序性能
查看>>
【trie树】HDU4825 Xor Sum
查看>>
SCCM TP4部署Office2013
查看>>
Linux系统启动过程,grub重装。
查看>>
使用Putty密钥认证机制远程登录Linux
查看>>