神箭手爬虫内置对象之hostFile和options

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

前面我们介绍了神箭手爬虫的三个对象,下面我们接着介绍其它的对象,希望可以认真学习,给你带来帮助。本篇文章我们介绍hostFile和options对象。首先我们来说下hostFile对象,这个对象主要是用来存放文件的一个对象。

function hostFile(url, type, options)

@param String url 待托管的文件链接地址

@param 枚举 type 托管文件的类型。可选值为FileType.IMAGE、FileType.TEXT、FileType.AUDIO、FileType.VIDEO、FileType.APPLICATION,分别对应图片、文本、音频、视频、应用,爬虫设置中可以选择是否托管对应的类型。可以不设置,建议指定一个类型。

@param JS对象 options 其他选项,可选择设置下载文件时使用的headers,以及在下载之前提供文件大小fileSize。

@return String 托管后的标识字符串,此串需要出现在爬取结果里面,否则不会进行托管。

非常重要:此函数的返回值一定不能忽略,一定得作为某个抽取项值或者值的一部分,否则不会进行托管。

爬虫在开启托管之后,首先会自动识别文件链接进行托管,识别规则如下:

对于抽取的html文本,会自动识别其中的img标签,并对其链接进行托管,托管类型为图片。

对于单独抽取的链接地址或链接地址数组,会自动根据后缀名进行识别,如果识别成功,则托管为对应的类型。

对于不能自动识别的链接,如果还需要托管,则需要主动调用此函数来进行托管。

调用此函数时,如果未指定type,会自动根据后缀名进行识别,对于不能识别的类型,都会归为FileType.APPLICATION。

options对象

options对象用来指定下载时的参数,支持属性如下:

fileSize Integer 文件大小

指定额外的文件大小信息可以加速下载时的处理。

headers JS对象 下载该文件时使用的headers

可以设置User-Agent、Cookie等,文件链接所在的网页链接会作为默认的Referer,一般不需要特殊指定,当然也可以在headers里面指定来覆盖默认值。

可自动识别文件类型的后缀:

文件类型 可自动识别文件类型的后缀
图片 .jpg, .jpeg, .png, .gif, .svg, .bmp
文本 .txt, .text
音频 .mp3, .wav, .wma, .amv, .m4a
视频 .mp4, .avi, .mpg, .mov, .3gp, .wmv, .3gpp
应用 .doc, .docx, .ppt, .pptx, .xls, .xlsx, .pdf, .csv, .zip, .rar, .gzip, .gz, .apk, .exe, .iso, .dmg

 

示例代码:

var configs = {
fields: [
{
name: "cover",
selector: "//div[@id='cover']/img/@src"
},
{
name: "attaches",
selector: "//div[@id='attaches']/a/@href",
repeated: true
}
]
};
configs.afterExtractField = function(fieldName, data, page, site) {
if (fieldName == "cover") {
return hostFile(data, FileType.IMAGE);//使用hostFile的返回值作为抽取项cover的值
}
else if (fieldName == "attaches") {
var attaches = [];
//对于抽取项attaches的每个链接进行hostFile调用
//并将返回值组成新的数据,作为抽取项attaches的值
for(var i = 0; i < data.length; i++) {
var hostedUrl = hostFile(data[i], FileType.AUDIO);
attaches.push(hostedUrl);
}
return attaches;
}
}

 

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

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