要怎么使用configs属性?

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

我们在编写神箭手爬虫的时,新建完爬虫之后,就要开始配置爬虫的配置文件。这个配置文件就是config属性。那么config属性要怎么使用和配置呢?下面就给你介绍一下config下面的参数:domains、scanUrls、contentUrlRegexes、helperUrlRegexes、fields、interval、timeout、enableJS、jsEngine、entriesFirst、userAgent、acceptHttpStatus和autoFindUrls,这些参数的是干什么用,要如何使用下面都有详细的解答。

domains

String数组 不可为空

定义爬虫爬取哪些域名下的网页,链接发现的时候会检查链接的域名,如果不是这些域名下的链接,则会被忽略。

scanUrls

String数组

爬虫入口页链接,这是给爬虫添加入口链接的简单方式。这种方式添加的链接都是GET请求。

不设置此属性,在initCrawl回调函数中调用site.addScanUrl,也可以达到添加入口页链接的目的。

以下情形只能在initCrawl回调函数中调用site.addScanUrl才能实现:

如果需要添加POST请求的入口页链接,只能通过site.addScanUrl来添加。

scanUrls数组长度的限制是1000个,超过1000个的部分将会被忽略;这种情况需要把添加入口页链接的工作放到initCrawl回调函数中来做。

contentUrlRegexes

String数组或正则数组

定义内容页的链接正则,爬虫会根据这些正则来判断一个链接是否是内容页链接。

可以写字符串形式的正则,也可以写JavaScript的正则。下面三种写法是等价的:

//写法一:js原生正则(建议使用这种写法)

[/http:\/\/www\.example\.com\/post\/\d+\.html.*/]

//写法二:正则的字符串形式

["http://www\\.example\\.com/post/\\d+\\.html.*"]

//写法三:通过字符串形式new一个js正则对象

[new RegExp("http://www\\.example\\.com/post/\\d+\\.html.*")]

匹配规则:

正则可以写多个,一个链接只要能匹配到其中的任意一个正则,该链接就会被认为是内容页链接。

不设置或设置为空数组,则所有的链接都是内容页链接。

helperUrlRegexes

String数据或正则数组

定义帮助页的链接正则,爬虫会根据这些正则来判断一个链接是否是帮助页链接。

跟contentUrlRegexes一样,也支持三种写法。

匹配规则:

正则可以写多个,一个链接只要能匹配到其中的任意一个正则,该链接就会被认为是帮助页链接。

不设置或设置为空数组,则所有的链接都是帮助页链接。

小技巧:

任何字符串都无法匹配正则new RegExp(""),所以如果想设置所有链接都不是帮助页链接,可以:

configs.helperUrlRegexes = [new RegExp("")];

//或者其等价形式

configs.helperUrlRegexes = [""];

fields

filed对象数组 不可为空

定义爬取结果的数据字段,一个field定义出一个字段。

下面给个简单的例子,field各属性的含义请查看field对象

var configs = {

fields: [

{

name: "article_title",

alias: "文章标题",

selector: "//h1[contains(@class,'headTit')]",

required: true

},

{

name: "article_content",

alias: "文章内容",

selector: "//div[contains(@class,'lph-article-comView')]"

}

]

};

interval

整数

两个链接之间的处理间隔。单位是毫秒,默认值1000,即1秒。可设置的最小值是1000。

timeout

整数

每个请求的默认超时时间。单位是毫秒,默认值5000,即5秒。

一般保持默认值即可,如果目标网站比较卡,经常超时,可以适当加大此值。如果设置过小,会导致所有请求都超时。

注意:

这是全局超时时间,对于没有特殊指定超时时间的请求,超时时间都是这个值。

对于开启自动JS渲染的页面,在渲染过程中会自动发出很多其他js、css等的请求,这些请求的超时时间都是这个值。

enableJS

布尔类型

是否默认开启自动JS渲染。默认值false。

这是一个全局设置,在处理具体的请求时,如果该请求有设置options.enableJS,则此值被覆盖。

var configs = {

enableJS: false

};

configs.initCrawl = function(site) {

site.addUrl("http://www.example.com");//该请求不会自动JS渲染

site.addUrl("http://sub.example.com", {

enableJS: true

});//该请求将会自动JS渲染

site.requestUrl("http://music.example.com");//该请求不会自动JS渲染

site.requestUrl("http://index.example.com", {

enableJS: true

});//该请求将会自动JS渲染

};

var configs = {

enableJS: true

};

configs.initCrawl = function(site) {

site.addUrl("http://www.example.com", {

enableJS: false

});//该请求不会自动JS渲染

site.addUrl("http://sub.example.com");//该请求将会自动JS渲染

site.requestUrl("http://music.example.com", {

enableJS: false

});//该请求不会自动JS渲染

site.requestUrl("http://index.example.com");//该请求将会自动JS渲染

};

jsEngine

枚举类型

使用哪种JS引擎来渲染页面。默认值为JSEngine.PhantomJS

可选择如下:

JSEngine.PhantomJS 使用phantomjs作为渲染引擎

JSEngine.HtmlUnit 使用HtmlUnit作为渲染引擎

注意:

HtmlUnit目前兼容性相对差一些

phantomjs单个网页最长渲染2分钟

entriesFirst

布尔类型

是否优先处理待爬队列中的scanUrl队列。默认值false。

待爬队列优先级可查看文档神箭手的链接调度

userAgent

枚举类型

爬虫在发请求时使用的UserAgent类型。默认值为UserAgent.Computer。

可选值如下:

UserAgent.Computer 使用电脑浏览器的UserAgent

UserAgent.Android 使用Android手机的UserAgent

UserAgent.iOS 使用苹果手机的UserAgent

UserAgent.Mobile 使用手机的UserAgent

UserAgent.Empty 不使用UserAgent

acceptHttpStatus

整数数组

添加下载网页时可以接受的HTTP返回码。默认接收的返回码包括200、201、202、203、204、205、206、207、208、226、301、302,通过此属性添加可以接受的返回码。

比如某个网页请求返回码是500,但是需要此网页的内容,此时需要:

configs.acceptHttpStatus = [500];

注意:

如果请求的返回码不在可接受的返回码里面,则返回的网页内容会被忽略,回调函数中无法获取其内容。

小技巧:返回码403会被自动认为请求失败,如果想取消此默认行为,可以把403加入可接受的HTTP返回码。

autoFindUrls

布尔类型

是否自动发现链接。默认值true。此值实际上只影响onProcessScanPage、onProcessHelperPage、onProcessContentPage这三个回调函数的默认返回值,最终是否会自动发现链接,还是由这三个回调函数的返回值决定。

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

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