标签:datasetName string 数据仓库 void de 基础 DataEntry API DataManager
原文链接: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"数据集并显示在界面中:
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 } }
在多个采集精灵中同时运行这个脚本, 可以并行工作, 只进不退的游标保证了每个采集精灵都不会重复劳动. 于是采集很快就完成了...
运行完成后的效果是:
转载于:https://www.cnblogs.com/iamzyf/p/3501137.html
标签:datasetName,string,数据仓库,void,de,基础,DataEntry,API,DataManager 来源: https://blog.csdn.net/weixin_30413739/article/details/97783500
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。