Porita详解----Items
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会保留如下网页标签:br, p, big, em, small, strong, sub, sup, ins, del, code, kbd, samp, tt, var, pre, listing, plaintext, abbr, acronym, address, bdo, blockquote, q, cite, dfn, table, tr, th, td, tbody, ul, ol, li, dl, dd, dt.其他的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的更多相关文章
- Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...
- 读文章《Flexbox详解》笔记
文章地址:Flexbox详解 属性摘抄: flex container : display: other values | flex | inline-flex; flex-direction: ro ...
- C++预处理详解
本文在参考ISO/IEC 14882:2003和cppreference.com的C++ Preprocessor的基础上,对C++预处理做一个全面的总结讲解.如果没有特殊说明,所列内容均依据C++9 ...
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- Memcache的使用和协议分析详解
Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- jquery.ui.widget详解
案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- jQuery.validator 详解二
前言:上一篇详细的介绍了jQuery.validator( 版本v1.13.0 )的验证规则,这一篇重点讲述它的源码结构,及如何来对元素进行验证,错误消息提示的内部实现 一.插件结构(组织方式) 在讲 ...
随机推荐
- jsp 重定向技术
页面重定向之后,request对象的属性全部失效,生成一个新的requeset对象
- cookie原理
cookie原理 一般来说,Cookie通过HTTP Headers从服务器端返回到浏览器上.首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie,然后,浏览器在它的请求 ...
- React 实践项目 (五)
React在Github上已经有接近70000的 star 数了,是目前最热门的前端框架.而我学习React也有一段时间了,现在就开始用 React+Redux 进行实战! React 实践项目 (一 ...
- 利用C#进行Socket通信编程之二:一个实例
本文转载自: http://blog.csdn.net/huangxinfeng/article/details/4967629/
- [PGM] Exact Inference for calculating marginal distribution
如何在贝叶斯网络中求解某变量的边缘分布? 这是一个问题. 贝叶斯网络如下: CPTs如下: (1) How to compute p( L | C = high )? p( L | C = high ...
- 【水题】HDU--1280 前m大的数
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就 ...
- MapReduce编程之Reduce Join多种应用场景与使用
在关系型数据库中 Join 是非常常见的操作,各种优化手段已经到了极致.在海量数据的环境下,不可避免的也会碰到这种类型的需求, 例如在数据分析时需要连接从不同的数据源中获取到数据.不同于传统的单机模式 ...
- MySQL- 5.7 sys schema笔记
如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各位支持! performance_schema提供监 ...
- NOIP 2002 提高组 字串变换
题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...
- AFNetworking源码简析
AFNetworking基本是苹果开发中网络请求库的标配,它是一个轻量级的网络库,专门针对iOS和OS X的网络应用设计,具有模块化的架构和丰富的APIs接口,功能强大并且使用简单,深受苹果应用开发人 ...