前嗅ForeSpider腳本教程:頻道腳本

今天,小編主要爲大家介紹一下:前嗅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);                }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章