前嗅ForeSpider脚本教程:数据抽取脚本
数据抽取脚本与数据过滤并列的脚本,它的作用是对抽取的数据进行过滤。数据处理脚本是数据抽取中的脚本。点击“数据抽取”节点,在“数据脚本”的下拉菜单必须选择“数据抽取脚本”。配置了数据处理脚本,数据的抽取流程将被改变:
1.如果脚本未正确返回dom区域节点,则该数据抽取的规则将完全由该脚本控制。
2.如果脚本返回了一个正确的dom区域节点,则此数据抽取以返回的区域节点为基准,区域外的数据则优先当做垃圾信息处理。
注意:一旦有了数据抽取脚本则数据过滤脚本将失效,即“数据脚本”的下拉菜单必须选择“数据抽取脚本”。
一.可用全局对象(只读)
EXTRACT: 当前采集引擎[ 对象类型: extractor ]
DATADB: 当前连接的数据库[ 对象类型: dataBase ]
RESULT: 当前结果集对象[ 对象类型: result ]
URL: 当前采集的链接对象[ 对象类型: url ]
URLTEXT : 描述当前链接采集的所有状态及属性的对象[ 对象类型: urltext ]
DOC: 当前采集的文档对象[ 对象类型: grabDoc ]
DOM: 当前采集文档的dom对象[ 对象类型: dom ]
ITEM: 模板区域的dom树节点(如果模板未选择区域则为dom树的根节点)[ 对象类型: domItem ]
TMPL: 当前文档模板对象[ 对象类型: tmplTmpl ]
REC: 当前记录集对象[ 对象类型: record ]
二.this对象
当前数据抽取[tmplData]对象
三.脚本返回值
如果欲采集某个特征区域内的数据,则必须返回该区域的dom节点对象( domItem对象); 否则该数据抽取则完全由脚本控制。
示例
在数据模板表单各字段的区域特征定位无法取值时,就要写数据抽取脚本。
1.数据抽取脚本基本的样式
record infoTable; //一个新的取值记录 infoTable.(字段名)infoTable.hkkey = MD5(URL.urlname); infoTable.title = title;、 infoTable.goods_id = itemId; infoTable.platform = ""; RESULT.AddRec(infoTable, TMPL.fstdoc.schemaid); //输出
2.采集第一个Form表单中的数据
return DOM.FindName("form");