神箭手爬虫内置对象之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)