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

頻道腳本是頻道配置中的腳本, 若是配置了頻道腳本,該頻道的全部採集流程將被配置的腳本所接管。php

一.可用全局對象(只讀)html

EXTRACT:當前採集引擎[ 對象類型: extractor ]jquery

DATADB:當前鏈接的數據庫[ 對象類型: dataBase ]ajax

RESULT:當前結果集對象[ 對象類型: result ]數據庫

二.this指針json

當前頻道節點[channel ]對象服務器

三.腳本返回值this

url

示例一:用腳本建立一個採集源列表指針

1.如下腳本將生成 http://xjrb.xjrb.com/xjrb/20141201/index.htm~ http://xjrb.xjrb.com/xjrb/20141231/index.htm 共31條連接:

url u;

for(i=1;i <=31;i++)

{

u.entryid = this.id;//頻道

idu.tmplid =1;//模板

Idu.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;//頻道

idu.tmplid =1;//模板

Idpre = 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

示例二:用腳本採集數據

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"); //獲取表單

IDif(schea) sId = schea.id;

elsesId = 1;

RESULT.AddRec(rec,sId);

EXTRACT.CloseDoc(gdoc);

}

相關文章
相關標籤/搜索