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>这样的标签就会被全部舍弃。