1234笑话大全

当前位置: 1234笑话大全 > 糗事大全 >

神箭手使用和开发文档

时间:2020-06-15 16:51来源:网络整理 作者:每日一笑 点击:
神箭手应用的整体框架: 首先定义一个configs对象, 在对象中添加配置信息; 然后通过Crawler或Fetcher对象来配置并启动应用.configs对象中可以定义下面这些成员:do

 

神箭手应用的整体框架: 首先定义一个configs对象, 在对象中添加配置信息; 然后通过Crawler或Fetcher对象来配置并启动应用.

configs对象中可以定义下面这些成员:

domains

定义神箭手应用爬取哪些域名下的网页, 非域名下的网页会被忽略以提高爬取速度

数组类型

在神箭手应用的代码中均可使用

通用栗子1:

 

var configs = {

// 单个域名

domains: ["wallstreetcn.com"],

// configs的其他成员

...

};

 

通用栗子2:

 

var configs = {

// 多个域名

domains: ["zhihu.sogou.com", "zhihu.com"],

// configs的其他成员

...

};

 

注意:

1. 如果代码中设置domains:[]或代码中不包含domains成员, 那么神箭手应用将无法正常运行;

2. 如果代码中设置domains:[""], 那么domains会匹配所有域名.

scanUrls

定义神箭手应用的入口页url, 神箭手应用会从入口页url开始爬取数据

数组类型

在神箭手应用的代码中均可使用

通用栗子1:

 

var configs = {

// 单个入口页url

scanUrls: ["http://wallstreetcn.com/"],

// configs的其他成员

...

};

 

通用栗子2:

 

var configs = {

// 多个入口页url

scanUrls: [

"http://baijia.baidu.com/",

"http://www.demo.com/"

],

// configs的其他成员

...

};

 

注意:

1. scanUrls的上限是1000个, 如果要添加更多入口页url, 请在等回调函数中调用添加;

2. 如果代码中设置scanUrls:[]或scanUrls:[""]或代码中不包含scanUrls成员, 请在回调函数中调用添加入口页url, 否则, 神箭手应用将无法正常运行.

contentUrlRegexes

1). 设置内容页url的正则表达式

2). 内容页是包含需爬取内容的网页, 比如, 这个url()就是一个内容页url, 可以从中抽取”文章作者”, “文章内容”等数据

数组类型

支持JavaScript正则表达式的写法

在采集爬虫代码中可使用

采集爬虫栗子1:

 

var configs = {

// 写法一

contentUrlRegexes: [

"http://club2011\\.auto\\.163\\.com/post/\\d+\\.html.*"

],

// configs的其他成员

...

};

 

采集爬虫栗子2:

 

var configs = {

// 写法二

contentUrlRegexes: [

/http:\/\/club2011\.auto\.163\.com\/post\/\d+\.html.*/

],

// configs的其他成员

...

};

 

注意:

1. 如果代码中设置contentUrlRegexes:[]或代码中不包含contentUrlRegexes成员, 那么待爬队列中的url都会被认定为内容页url;

2. 如果代码中设置contentUrlRegexes:[""], 那么待爬队列中的url都不会被认定为内容页url;

3. 正则表达式中的.和?都需要转义.

helperUrlRegexes

1). 设置列表页url的正则表达式

2). 列表页是包含内容页url的网页, 比如, 这个url(?s=vr&site=article)就是一个列表页url, 可以从中获取”内容页url”等数据

数组类型

支持JavaScript正则表达式的写法

在采集爬虫代码中可使用

采集爬虫栗子1:

 

var configs = {

// 写法一

helperUrlRegexes: [

"http://wallstreetcn\\.com/news(\\?/page=\\d+)?"

],

// configs的其他成员

...

};

 

采集爬虫栗子2:

 

var configs = {

// 写法二

helperUrlRegexes: [

/http:\/\/wallstreetcn\.com\/news(\?\/page=\d+)?/

],

// configs的其他成员

...

};

 

注意:

1. 如果代码中设置helperUrlRegexes:[]或代码中不包含helperUrlRegexes成员, 那么待爬队列中的url都会被认定为列表页url;

2. 如果代码中设置helperUrlRegexes:[""], 那么待爬队列中的url都不会被认定为列表页url.

fields

1). 定义内容页的抽取规则

2). 规则由一个或多个field组成, 一个field代表一个抽取项

数组类型

在神箭手应用的代码中均可使用

通用栗子:

从糗事百科的内容页中抽取文章内容

 

var configs = {

// configs的其他成员

...

fields: [

{

// 抽取项名称

name: "content",

// 抽取项别名, 在神箭手控制台预览该条数据的时候会显示

alias: "文章内容",

// 抽取该项数据的表达式(默认使用XPath)

selector: "//*[@id='single-next-link']"

}

]

};

 

点此查看“field”详解

注意: 如果代码中设置fields:[]或fields:[""]或代码中不包含fields成员, 那么神箭手应用将无法正常运行.

interval

1). 设置神箭手应用爬取每个网页的时间间隔. 如果目标网站有屏蔽措施, 设置较长时间间隔可以降低被屏蔽概率

2). 单位: 毫秒

整型

interval默认值和最小值都是1000(毫秒), 即1秒

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 设置5秒时间间隔

interval: 5000,

// configs的其他成员

...

};

 

enableJS

1). 设置是否开启自动JS渲染

2). 默认值是false

3). 如果需要开启自动JS渲染, 可设置此项为true, 这样请求, 和, 及, 和时, 都会自动JS渲染

4). enableJS值为true时, 不会影响手动发送HTTP请求(site.requestUrl)的自动JS渲染; 如需在时开启自动JS渲染, 请在传入参数中设置

布尔类型

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 开启自动JS渲染

enableJS: true,

// configs的其他成员

...

};

 

点此查看“自动JS渲染”详解

renderTime

1). 表示在自动JS渲染的过程中, 如果在设置的该时间内未发送HTTP请求或加载网页资源, 自动JS渲染会立即停止

2). 单位: 毫秒

3). 当enableJS值为true时, 在请求, 和, 及, 和自动JS渲染过程中, 或在请求时开启自动JS渲染, 都会受到renderTime限制

整型

只有当configs成员或options对象的enableJS值为true时, renderTime才生效

renderTime默认值是3000(毫秒), 即3秒, 最大值是10分钟

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 开启自动JS渲染

enableJS: true,

// 在8秒内未发送HTTP请求或加载网页资源, 自动JS渲染会立即停止

renderTime: 8000,

// configs的其他成员

...

};

 

timeout

1). 设置下载单个网页或加载网页中每个资源的超时时间

2). 单位: 毫秒

3). 无论是否开启自动JS渲染, 请求, 和, 及, , 和时都会受到timeout限制

整型

timeout默认值是5000(毫秒), 即5秒

在神箭手应用的代码中均可使用

通用栗子1:

 

var configs = {

// 下载单个网页的超时时间是10秒

timeout: 10000,

// configs的其他成员

...

};

 

通用栗子2:

 

var configs = {

// 加载网页中每个资源的超时时间是10秒

timeout: 8000,

// 开启自动JS渲染

enableJS: true,

// configs的其他成员

...

};

 

userAgent

1). 是一种向访问网站提供所使用的浏览器类型, 操作系统及版本等信息的标识

2). 默认值是UserAgent.Computer, 还可使用UserAgent.Android, UserAgent.iOS和UserAgent.Mobile

枚举类型

UserAgent.Android, 使用安卓手机浏览器访问网页

UserAgent.iOS, 使用苹果手机浏览器访问网页

UserAgent.Computer, 使用PC浏览器访问网页

UserAgent.Mobile, 使用移动设备浏览器访问网页, 移动设备包括手机和平板等

userAgent所使用的具体浏览器类型是随机分配的

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 使用安卓手机浏览器访问网页

userAgent: UserAgent.Android,

// configs的其他成员

...

};

 

changeProxyEveryPage

1). 在神箭手应用中开启代理IP切换之后, 如果当前代理IP过期或者返回true, 神箭手会切换一次IP. 如果需要在每次爬取不同的网页时都切换一次IP, 可以通过设置该成员为true实现

2). 默认值是false

3). 使用条件:

4). changeProxyEveryPage支持通过或爬取网页时切换代理IP, 不支持通过且options中设置enableJS: true(开启自动JS渲染)爬取网页时切换代理IP

5). 如非必需, 请不要设置此成员的值为true. 因为切换代理IP需要时间, 每次爬取网页都切换代理IP会极大降低爬取速度

布尔类型

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 设置每次爬取网页时都切换代理IP

changeProxyEveryPage: true,

// configs的其他成员

...

};

 

点此查看“代理IP切换”详解

tryTimes

1). 单个HTTP请求失败时, 可自动重试. 通过tryTimes设置单个HTTP请求的最多重复请求次数

2). 默认值是0, 0和1都表示单个HTTP请求最多可请求一次

3). 请求失败的情况包括: “请求过程出现异常(如, 请求超时)”和”请求返回内容为空”

4). 单个HTTP请求包括请求, 和, 及和

整型

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 单个HTTP请求最多可重复请求2次

tryTimes: 2,

// configs的其他成员

...

};

 

entriesFirst

1). 设置神箭手应用是否优先爬取待爬队列中的

2). 默认值是false, 神箭手应用会按顺序依次爬取待爬队列中的url, 包括, 和

3). entriesFirst值为true时, 神箭手应用会优先爬取待爬队列中的, 爬取完成后, 再爬取和

布尔类型

在神箭手应用的代码中均可使用

通用栗子:

 

var configs = {

// 设置优先爬取"scanUrl"

entriesFirst: true,

// configs的其他成员

...

};

 

注意:

1. 默认情况下(entriesFirst: false), 爬虫是根据网页加入待爬队列的先后顺序来处理的. 即先加入待爬队列的网页会先被取出处理;


(责任编辑:每日一笑)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容