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", ""); //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", ""));
}
添加后即刻就可以在数据仓库管理器中看到数据项:
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
}
}
在多个采集精灵中同时运行这个脚本, 可以并行工作, 只进不退的游标保证了每个采集精灵都不会重复劳动. 于是采集很快就完成了...
运行完成后的效果是:
API - 使用数据仓库 - 基础篇的更多相关文章
- ASP.NET Web API 基础篇1
ASP.NET Web API 直到我膝盖中了一箭[1]基础篇 无题 蓦然回首,那些年,我竟然一直很二. 小时候,读武侠小说的时候,看到那些猪脚,常常会产生一种代入感,幻想自己也会遭遇某种奇遇,遇到悬 ...
- 我拖拖拖--H5拖放API基础篇
不要搞错,本文不是讲如何拖地的.看过<javascript精粹>朋友应该知道,他实现拖放的过程比较复杂,现在时代不同了,我们用H5的新的拖放API就能非常方便的实现拖放效果了.最近在园子见 ...
- rcGIS API for JavaScript之基础篇(一)
ArcGIS API for JavaScript之基础篇(一)上一篇文章介绍了ArcGIS 10.4的安装指南也包含了所需要资源,需要的同学可以去公众号中查找.最近几天学习了2D地图.3D地图以及图 ...
- [译]RxJS 5.X基础篇
欢迎指错与讨论 : ) 当前RxJS版本:5.0.0-beta.10.更详细的内容尽在RxJS官网http://reactivex.io/rxjs/manual/overview.html.文章比较长 ...
- [麦先生]TP3.2之微信开发那点事[基础篇](获取access_token)
在微信文档中一共提供了两个access_token:一个是伪全局配置的Access_token;一个是在微信网页授权时的小Access_token 很多刚刚接触微信开发的人经常会混淆这两个的作用: 我 ...
- 【转载】 Spark性能优化指南——基础篇
转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...
- Java多线程系列--“基础篇”05之 线程等待与唤醒
概要 本章,会对线程等待/唤醒方法进行介绍.涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long t ...
- Java多线程系列--“基础篇”09之 interrupt()和线程终止方式
概要 本章,会对线程的interrupt()中断和终止方式进行介绍.涉及到的内容包括:1. interrupt()说明2. 终止线程的方式2.1 终止处于“阻塞状态”的线程2.2 终止处于“运行状态” ...
- SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)
前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...
随机推荐
- Thinkphp学习笔记7-输入变量
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了. ...
- RHEL7.0 配置网络IP的三种方法
导读 RHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式. en代表的是enthernet (以太网),o 代表的是onboard (内置),那一串数字是主板的某种索引编 ...
- LIBSVM与LIBLINEAR
对于多分类问题以及核函数的选取,以下经验规则可以借鉴: 如果如果特征数远远大于样本数的情况下,使用线性核就可以了. 如果特征数和样本数都很大,例如文档分类,一般使用线性核, LIBLINEAR比LIB ...
- 怎样改动android系统字体大小
改动字体大小的方法是运用到一个ActivityManagerNative类 首先先在代码宣告 private Configuration mconfig = new Configuration(); ...
- 手机网站调试神器之chrome控制台
现在真是一个信息化的时代,每个人手里都拿着一款智能机,上班下班走路坐车之余都会玩玩手机,上上网.于是作为广大网站媒体来说,争抢手机市场无疑是刻不容缓.对于我们Web前端工程师来说,了解并掌握手机编程的 ...
- 苹果开发——设置iTunes Connect中的Contracts, Tax, and Banking
原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137485857701?suggestedreading 如果要在苹果商城发布收费应 ...
- 移动端项目中 @2x 图 和 @3x 图 的使用
移动端开发过程中,因为手机的dpr(设备像素比不同),我们需要根据dpr来修改图标的大小: 1.通过mixin,动态修改图标的背景图片.通过@media (媒体查询),判断设备的dpr. @mixin ...
- webpack 编译图片文件 file-loader
1.安装插件 npm i file-loader --save-dev npm i url-loader --save-dev npm install image-webpack-loader - ...
- VmProtect v2.12.3 安装注冊
执行vmprotect.exe開始安装: 1.选择语言.默觉得"English": 2.欢迎页,点"Next"到下一步: 3.授权信息,选"I acc ...
- Flume日志收集系统介绍
转自:http://blog.csdn.net/a2011480169/article/details/51544664 在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Ha ...