shenjian对象有哪些函数如何使用?

- 作者:神箭手官网 ——来源:神箭手官网 ——

对于爬虫来说比较重要的一个问题就是采集源的读取问题,只有确定了采集源读取问题之后才可以开始运行爬虫。而神箭手智能爬虫中内置的对象shenjian,就是一个全局对象。这个对象主要用来提供一些和神箭手平台相关的函数,而这些函数里面就有readSource对象,可以使用这个对象从平台读取数据源,然后开始采集数据。下面就对各个函数做下详细的介绍,希望可以给你带来帮助。

readSource

function readSource(sourceId, query, fetchType, size)

@param 整数 sourceId 数据源ID

@param String query GraphQL的query查询语句,参考query语法说明

@param 枚举 fetchType 读取数据的方式,默认值FetchType.ITERATOR。可选值如下:FetchType.ITERATOR - 以迭代器的方式获取数据;FetchType.ONE - 仅获取一条数据;FetchType.MANY - 获取多条数据,参数size指定要获取的条数;FetchType.ALL - 获取所有数据,最多获取1000条,超过1000条请选择使用迭代器方式获取。

@param 整数 size 获取数据条数,配合FetchType.MANY使用。

@return fetchType为FetchType.ITERATOR时,返回一个数据迭代器对象source,该对象提供next和nextBatch方法来遍历数据;fetchType为FetchType.ONE时,返回获取的单条数据;fetchType为FetchType.MANY时,返回指定条数的数据;fetchType为FetchType.ALL时,返回全部数据,最多返回1000条。

该函数提供读取神箭手平台上数据源的能力,通过返回的迭代器对象source来遍历数据。内部实现是封装了GraphQL。

source.next

function next()

@return JS对象 读取到的下一条数据。没有下一条数据时,返回undefined作为结束的判断;异常(如超时)时,返回null,一般需要重试。

source.nextBatch

function nextBatch(size)

@param Integer size 批量获取数据的条数

@return JS对象数组 读取到的数据数组。没有下一条数据时,返回undefined作为结束的判断;异常(如超时)时,返回null,一般需要重试。

注意:

此函数虽然提供了size参数,但是实际返回的数据条数仍然受套餐限制,频率不限,条数限制参考GraphQL调用限制

示例代码片段:(在initCrawl中读取数据源的数据并生成scanUrl)

var sourceId = 14566;//此ID需要修改为您自己的数据源ID//GraphQL查询语句,查询"city"值为"北京"的所有数据的"shop_id"字段var query = 'source(city:{eq:"北京"}){data{shop_id}}';var src = shenjian.readSource(sourceId, query);configs.initCrawl = function(site) { if (src) { // 调用"src"的"nextBatch"函数 // 得到包含10条"shop_id"的JS对象数组 // "shops"的值是: // [{"shop_id":"10041553"},{"shop_id":"10036329"}] var shops = src.nextBatch(10); for (var s in shops) { var shopId = shops[s].shop_id; var scanUrl = "https://shop-"+shopId+".example.com/"; site.addScanUrl(scanUrl); } }};

示例代码片段:(判断数据源中是否存在满足条件的数据)

var shop = shenjian.readSource(14566, 'source(city:{eq:"北京"}){data{shop_id,shop_name}}', FetchType.ONE);if (shop) { //存在} else { //不存在}

如果你还有其它疑问可以来本站搜索相关问题,这里会有你想要的答案:火车脚本网

还有什么疑问可以提出来
  • 全部评论(0
    还没有评论,快来抢沙发吧!