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 )的验证规则,这一篇重点讲述它的源码结构,及如何来对元素进行验证,错误消息提示的内部实现 一.插件结构(组织方式) 在讲 ...
随机推荐
- centos6.8 静默安装 oracle 11.2.0.4
安装环境及系统要求 (下文具体参数值与路径根据自己的环境调整)操作系统:Red Hat Enterprise Linux 6 (x86) 或者CentOS 6 (x64) 数据库:Oracle ...
- Mybatis 的分页条件查询语句编写
刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...
- C#委托基础学习
什么是委托 委托,顾名思义就是在你忙着做另一件事时候,你要去做另一件事,于是你可能就会委托别人帮你做,让别人把结果返回给你.编程时,委托也有这个思想. 我目前对委托的看法是,在编程中,委托 ...
- python函数(6):内置函数和匿名函数
我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说print(),len(),type()等等,它们是哪来的呢? 一.内置函数 由python内部 ...
- Kaggle竞赛 —— 泰坦尼克号(Titanic)
完整代码见kaggle kernel 或 NbViewer 比赛页面:https://www.kaggle.com/c/titanic Titanic大概是kaggle上最受欢迎的项目了,有7000多 ...
- asp.net 动态压缩、切割图片,并做缓存处理机制
在asp.net中,新建一个handler,把需要切割的网内图片,通过调用此URL来切割并缓存.http://localhost:53829/CacheImage/ResizeImage.ashx?s ...
- Jmeter 参数化请求实例
Jmeter 参数化请求实例 在jmeter中的请求可以参数化,其中参数化的方式有4种: 1.CSV Data Set Config 2.数据库 3.用户自定义变量 4.用jmeter中的函数获取参数 ...
- java虚拟机详解
注: 此篇文章可以算是读<深入理解Java虚拟机:JVM高级特性与最佳实践>一书后的笔记总结加上我个人的心得看法. 整体总结顺序沿用了书中顺序,但多处章节用自己的话或直白或扩展的进行了重新 ...
- pwnable.kr memcpy之write up
// compiled with : gcc -o memcpy memcpy.c -m32 -lm #include <stdio.h> #include <string.h> ...
- 【性能测试工具】- WebBench
优点:模拟的并发量更大:缺点:统计的结果有限 概述: webbench是由Lionbridge公司(http://www.lionbridge.com)开发,它是Linux下的一个网站压力测试工具,它 ...