今天,小編主要爲大家介紹一下:前嗅ForeSpider腳本中的頻道腳本。
頻道腳本是頻道配置中的腳本, 如果配置了頻道腳本,該頻道的所有采集流程將被配置的腳本所接管。
一.可用全局對象(只讀)
EXTRACT:當前採集引擎[ 對象類型: extractor ]
DATADB:當前連接的數據庫[ 對象類型: dataBase ]
RESULT:當前結果集對象[ 對象類型: result ]
二.this指針
當前頻道節點[channel ]對象
三.腳本返回值
無
示例一:
用腳本創建一個採集源列表
1.以下腳本將生成
http://xjrb.xjrb.com/xjrb/20141231/index.htm 共31條鏈接:
url u;
for(i=1;i <=31;i++){
u.entryid = this.id; //頻道Id
u.tmplid = 1;//模板Id
u.urlname="http://xjrb.xjrb.com/xjrb/201412"+ i.Dim(2) + "/index.htm"; //鏈接地址
u.title = "test";
RESULT.AddLink(u);//添加到最後的結果中
}
2.以下腳本將生成從當前日期遞推前十天的鏈接:
url u;
time t1;
for(i=0;i<10;i++){
u.title = "test"; //鏈接標題
u.entryid = this.id; //頻道id
u.tmplid = 1;//模板Id
pre = t1.Preday(i);//向前計算日期
u.urlname = "http://www.cdrb.com.cn/html/"+ pre.year +"-" + pre.month + "/" + pre.day + "/content_2155799.htm"; //鏈接地址 RESULT.AddLink(u);//添加到最後的結果中
}
3.以下腳本用關鍵詞拼接鏈接
url u;
var keys=["前嗅","爬蟲"];
for(i=0;i<keys.size;i++){
u.title = "檢索"; //鏈接標題
u.entryid = this.id; //頻道id
u.tmplid = 1; //模板Id
u.url = "http://ww.forenose.com/search?keywords="+ keys[i]; //鏈接地址
RESULT.AddLink(u);//添加到最後的結果中
}
示例二:用腳本採集數據
1.以下腳本查找表格並抽取表格數據
gdoc = EXTRACT.OpenDoc(this,"http://gk.sjtu.edu.cn/index.php/list/fellow/2015-10-30-15-02-59/241-2015-11-18-02-21-01",0);
if(gdoc){
dm = gdoc.GetDom();
record rec;
if(dm){
tab = dm.FindName("table");
if(tab){
tr = dm.FindName("tr", tab);
while(tr){
name = dm.FindName("td", tr);
if(name){ //找到數據
posd = 0;
corp=0;
fund=0;
rec.name = dm.GetTextAll(name); //名字
posd = name.next;
if(posd){
corp = posd.next;
rec.position = dm.GetTextAll(posd);
}
if(corp){
fund = corp.next;
rec.company =dm.GetTextAll(corp);
}
if(fund){
rec.fund =dm.GetTextAll(fund);
}
RESULT.AddRec(rec,3);
}
tr = tr.next; }
}
}
EXTRACT.CloseDoc(gdoc);
}
2.以下腳本從服務器請求json數據並存入到記錄中gdoc = EXTRACT.OpenDoc(this,"http://www.w3school.com.cn//example/jquery/demo_ajax_json.js",0);
if(gdoc){
jScript js;record rec;data = js.RunJson(gdoc.GetDom().GetSource());
rec.name = data.firstName;
rec.family=data.lastName;
rec.age = data.age;
schea =EXTRACT.GetSchema("schemaName"); //獲取表單ID
if(schea){
sId = schea.id;
else sId = 1;
RESULT.AddRec(rec,sId);
}
EXTRACT.CloseDoc(gdoc);
}