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 ...
随机推荐
- [React] Refactor a Class Component with React hooks to a Function
We have a render prop based class component that allows us to make a GraphQL request with a given qu ...
- (C++)函数参数传递中的一级指针和二级指针
主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址: 二级指针: ...
- SQL2005 镜像配置
新添加了一台服务器,做原来服务器的备份机,用交叉线+双网卡配置了内网. 系统环境:Windows 2008 R2 数据库:SQL2005 SP3 设置镜像可以用证书和域两种情况,不过域设置的权限比 ...
- ASP站点无法访问怎么办
确保启用了目录浏览功能
- [置顶] 安卓弹出ProgressDialog进度框之后触摸屏幕就消失了的解决方法
安卓在4.0之前对话框都是模态的,之后就改成非模态了. 解决方法吗,使用progressdialog.setCancelable(false)也行,但是这样就不能响应返回键的事件了,最好的方法是调用p ...
- Google开源单元測试框架Google Test:VS2012 配置
由题目可知,Google Test(简称gtest)是Google公布的一个开源C/C++測试框架,被应用于多个开源项目及Google内部项目中,包括Chrome浏览器.LLVM编译器架构.Proto ...
- sqlserver2008 R2中查找未使用过的索引
转自:http://blog.csdn.net/yangzhawen/article/details/7247393 sqlserver2008 R2中查找未使用过的索引: o.name AS 表名 ...
- 【五年】Java打怪升级之路
之前写过一篇帖子.就是关于工作经验分享的,近期非常多人私信我.所以博客这边再分享一次 这几年来,我最大的感想就是一句话:多看.多写.多想.多问.多分享.多优化.多运动... 1.[多看] 读万卷书,行 ...
- chrome 设置启动时打开特定一组网页
chrome 设置启动时打开特定一组网页 CreateTime--2018年4月25日08:57:00 Author:Marydon 1.使用场景 经常有一些必用的网站,每天打开chrome都要依 ...
- Oracle 计算表占用空间大小
我们可以通过系统视图DBA_SEGMENTS.USER_SEGMETNS.DBA_TABLES来查看一个表所占空间的大小,如下所示: SELECT SEGMENT_NAME TABLE_NAME ,S ...