zoukankan      html  css  js  c++  java
  • API

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

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

    1. DataManager.New

    void New(string datasetName)

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

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

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

    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"));
    }

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

    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个链接: 

    脚本如下:

    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
        }
    }

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

    运行完成后的效果是:

  • 相关阅读:
    LVM逻辑卷管理练习
    浅谈TCP三次握手和四次分手
    centos模拟创建CA和申请证书
    破解root口令
    shell脚本编程进阶总结
    基于FIFO的串口发送机设计
    流水线方式LUT查表法乘法器
    verilog中有符号整数说明及除法实现
    LUT查表法乘法器所犯下错误。。。。
    似然函数
  • 原文地址:https://www.cnblogs.com/iamzyf/p/3501137.html
Copyright © 2011-2022 走看看