API - 使用数据仓库 - 基础篇

原文链接:http://www.cnblogs.com/iamzyf/p/3501137.html

数据仓库是集成在Spider Studio中的一个重要功能, 利用它可以非常方便的保存采集到的数据, 然后导出或者在其他脚本中再利用. 

数据仓库的全部功能都集成在DataManager这个静态类里面, 基本用法如下:

1. DataManager.New

void New(string datasetName)

 调用此方法会创建一个名为datasetName的数据集, 注意这里datasetName是不区分大小写的. 创建的同时该数据集会自动显示在数据仓库管理器界面中, 如:

public void Run()
{
    DataManager.New("test_data");
}

 

运行此代码会生成"TEST_DATA"数据集并显示在界面中:

API - 使用数据仓库 - 基础篇

2. DataManager.Count

int Count(string datasetName)

 调用此方法可以获得指定数据集的大小.

3. DataManager.AppendData

void AppendData(string datasetName, DataEntry entry)

 

调用此方法可以向指定数据集中添加数据.

3.1 DataEntry是数据项的类型.

简单来说是一个Key-Value的集合, 注意Key和Value都必须是string类型. 下面举几个例子说明用法:

var de = DataEntry.Create().Set("Name", "张三").Set("Age", "21"); //Name = 张三, Age = 21
var name = de.Get("Name");
var age = de.Get("Age");

 

3.2 向指定数据集添加数据项的例子:

public void Run()
{
    DataManager.AppendData("test_data", DataEntry.Create().Set("Name", "张三").Set("Age", "21"));
}

 

添加后即刻就可以在数据仓库管理器中看到数据项:

API - 使用数据仓库 - 基础篇

4. DataManager.GetData

List<DataEntry> GetData(string datasetName, int index, int length)

 

获取指定范围的数据项. 如果需要批量读取数据内容, 就应该使用这个方法. 

5. DataManager.ReadData

DataEntry ReadData(string datasetName)

 

读取指定数据集游标位置的数据项. 这里可以理解为一个只进不退的游标, 每读取一次, 游标就向前进一步, 直到数据集末尾为止.

此方法很适合用于开发需要并行抓取的脚本. 比如下面的例子:

从数据集URLS中获取url, 然后打开页面, 获取指定元素的Text, 并保存到CONTENTS数据集中.

URLS中有3000个链接: 

API - 使用数据仓库 - 基础篇

脚本如下:

public void Run()
{
    while(Default.Available)
    {
        var de = DataManager.ReadData("URLS"); //读取URLS当前位置的DataEntry
        Default.Navigate(de.Get("Url"));
        Default.Ready();
        var node = Default.SelectSingleNode(...);
        DataManager.AppendData("CONTENTS", de.Set("Text", node.Text())); //在de中添加新的字段"Text"然后保存到CONTENTS
    }
}

 

在多个采集精灵中同时运行这个脚本, 可以并行工作, 只进不退的游标保证了每个采集精灵都不会重复劳动. 于是采集很快就完成了...

运行完成后的效果是:

API - 使用数据仓库 - 基础篇

 

 

 

 

 

转载于:https://www.cnblogs.com/iamzyf/p/3501137.html

上一篇:Day 07 python线程de一天


下一篇:示例 - 数据仓库的妙用