Items(项目)

  一个item是指从目标网站上爬取的一条单独的数据。例如从京东网站上爬取的一款小米6手机的信息。大家应该对 item (项目)和 item definition(项目定义)做一个区分。Portia中对这两者的区别是item definition是对项目的定义而不是项目本身,是一个抽象的概念,但是portia中的item则是一个item definition的特例,是一个实实在在的物品的描述。例如,手机是一个项目的概念(item definition),从网站上爬取的小米6手机则是一个item。 一个项目定义由多个属性组成,因此,使用项目模板,您可能会有商品名称、价格、制造商等的属性。我们使用属性从页面中提取数据到每个item中。

  Required-----为了保证每个属性都可以顺利的通过创建的模板获取到,portia给每个item的属性提供了Required标志,如果设置Required标志,则没有这条属性的数据都会被丢弃。而且默认情况下portia会自动去掉重复的数据。

  Vary-----在某些情况下,一个item中可能有一个属性有多个不同的值。在这种情况下,可以将这个属性标记为Vary。当查重时,将忽略该字段。只有在必要时才使用变化,因为误用很容易导致查重失败。url字段是一个很好的例子,因为同一项可能有多个url。如果url字段没有标记为变化,每个重复项都将被视为唯一的item。

Field types(字段的类型)

  你可以设置字段类型,以确保它只匹配此类数据。以下是字段的类型列表:

type description
text 纯文本。在嵌套元素中,任何标记都被删除,文本会被提取出来。
number 数值。例如,7,9.59
image 图片的url。大多数情况下,img元素的src属性。
price 同number
raw html 原始的html
safe html 清洁后的html
geopoint 同text
url url
date 数据解析器解析的日期值。如果带盖注释的元素具有非日期文本,则无法工作。

safe html会保留如下网页标签:brpbigemsmallstrongsubsupinsdelcodekbdsampttvarprelistingplaintextabbracronymaddressbdoblockquoteqcitedfntabletrthtdtbodyulollidldddt.其他的header类的标签(h1,h2...h6)和b标签会被替换为strong标签,i标签会替换为em标签,其他的所有标签内容都会被丢弃。包含在要排除的标签内的白名单元素将会保留下来,除了包含在script,img或者input这些标签。例如,<div><code>example</code></div>会被提取为<code>example</code>,但是<script><code>example</code></script>这样的标签就会被全部舍弃。

Porita详解----Items的更多相关文章

  1. Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  2. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)

    在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...

  3. 读文章《Flexbox详解》笔记

    文章地址:Flexbox详解 属性摘抄: flex container : display: other values | flex | inline-flex; flex-direction: ro ...

  4. C++预处理详解

    本文在参考ISO/IEC 14882:2003和cppreference.com的C++ Preprocessor的基础上,对C++预处理做一个全面的总结讲解.如果没有特殊说明,所列内容均依据C++9 ...

  5. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  6. Memcache的使用和协议分析详解

    Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...

  7. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  8. jquery.ui.widget详解

    案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  9. jQuery.validator 详解二

    前言:上一篇详细的介绍了jQuery.validator( 版本v1.13.0 )的验证规则,这一篇重点讲述它的源码结构,及如何来对元素进行验证,错误消息提示的内部实现 一.插件结构(组织方式) 在讲 ...

随机推荐

  1. Python-cookies

    附新手工具: python新手工具下载链接:http://pan.baidu.com/s/1eS8WMR4 密码:7eso 注册码:http://idea.liyang.io py和编辑器安装教程链接 ...

  2. ue4粒子实现流血效果

    ---恢复内容开始--- 动作/射击游戏中,击中角色时常常伴随着血花效果,增强打击感的同时,也方便了玩家对命中与否的判断. 血液效果分两块,首先是受伤部位在受击瞬间产生血雾粒子,然后在身体.地面.墙面 ...

  3. strcpy.strcmp.strlen.strcat函数的实现

    #include <stdio.h> #include <string.h>   char *copy(char *a,char *b);//声明一个复制函数 char *ca ...

  4. swift3.0 移除当前页面的前一个页面

    用的是以下的跳转方式 self.navigationController?.pushViewController(viewController, animated: true) 在当前页面移除方式 s ...

  5. Mapreduce——视频播放数据分类统计

    很多视频网站都有电视剧热度排名,一般是依据用户在自己站的行为数据所体现出的受欢迎程度来排名.这里有一份来自优酷.爱奇艺.搜索视频等五大视频网站的一份视频播放数据,我们利用这份数据做些有意义的事情. 金 ...

  6. "=="和equals方法究竟有什么区别?

    (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, ...

  7. jmeter - 断言

    jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言 ...

  8. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

  9. 逻辑回归的实现(LogicalRegression)

    1.背景知识       在刚刚结束的天猫大数据s1比赛中,逻辑回归是大家都普遍使用且效果不错的一种算法.   (1)回归           先来说说什么是回归,比如说我们有两类数据,各有50十个点 ...

  10. 【NO.7】HTTP请求-参数化

    http://123.456.7.89:8080/article/relation/channel/0038/keyword/movie/start/0/size/20/ 简单说一下这个URL的意思也 ...