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 )的验证规则,这一篇重点讲述它的源码结构,及如何来对元素进行验证,错误消息提示的内部实现 一.插件结构(组织方式) 在讲 ...
随机推荐
- JAVA字符串操作 (转)
JAVA字符串操作 原帖地址:http://blog.163.com/hn_myj@126/blog/static/50555635200861133942947/ 参考:http://blog.cs ...
- 【分支结构】Jcc 的一些助记
eax > ebx OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0 eax = ebx OF=0 SF=0 ZF=1 AF=0 PF=1 CF=0 eax < ebx OF=0 ...
- JavaWeb学习归档(一) - HTTP协议总结
版权声明:本文为博主原创文章,未经博主允许不得转载. 本文转载自我的个人博客:http://www.codingme.net/post/java-web-01 HTTP协议简介 超文本传输协议(HTT ...
- Hadoop(一)Centos7虚拟机网络配置
Centos7虚拟机网络配置(桥接模式) 一 VirtualBox提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). 1 桥接模式(br ...
- 使用MvcPager实现Ajax分页
接触ASP.NET MVC的时间不长,这段时间做东西的时候要用到分页,但是普通的分页用户体验不是很好,所以想实现无刷新的分页. 在网上找了好多例子,但是感觉都封装的不好,不小心发现了Webdiyer. ...
- 安装完jdk配置环境变量
(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) (2)编辑->变量名" ...
- Java中synchronized和Lock的区别
synchronized和Lock的区别synchronize锁对象可以是任意对象,由于监视器方法必须要拥有锁对象那么任意对象都可以调用的方法所以将其抽取到Object类中去定义监视器方法这样锁对象和 ...
- JavaScript 开发总结(一)
数据类型:JavaScript定义的数据类型有字符串.数字.布尔.数组.对象.Null.Undefined,但typeof有区分可判别的数据分类是number.string.boolean.objec ...
- Android Studio 或 IntelliJ IDEA获取数字签名的方法
原先在 Eclipse中 数字签名(SHA1或MD5)的获取方法 为: 点击 Eclipse导航栏的Windows --> Preference --> Android --> Bu ...
- 【有意思的BUG】默认置灰的属性的值传递
数据由Client发送给Server,如下图所示,Server在收到请求后会响应Client. 比如Client发送给Server一组数据:Name:sean&Hobby:movies& ...