爬虫解析器
针对爬虫项目的指定网站解析器。
API
- getLinks
- getContent
- parse
- isArticleUrl
- getIdFromArticleUrl
配置参数
完整示例
'use strict';/** * 中华美食 * http://www.zhms.cn/ */moduleexports = // 域名 网站域名,设置域名后只处理这些域名下的网页 domains: 'http://www.zhms.cn/' // 入口页链接,分别从这些链接开始爬取 scanUrls: 'http://www.zhms.cn/' // 列表页url的正则,符合这些正则的页面会被当作列表页处理 listUrlRegexes: /http:\/\/www\.zhms\.cn\/\w+\/[0-9_]+[\/]?$/ // 内容页url的正则,符合这些正则的页面会被当作内容页处理 contentUrlRegexes: /http:\/\/www\.zhms\.cn\/\w+\/\d+\.html$/ // 唯一标示 sourceId: /http:\/\/www\.zhms\.cn\/\w+\/\d+\.html$/ // 从内容页中抽取需要的数据 fields: // 标题 name: 'title' selector: '.zuofa-tit-bar h1' format: 'text' // 详情 name: 'content' selector: '.zuofa-tit-bar img' // 首图 '.zuofa-tit-bar .zf-t3' // 描述 '.yongliao' // 用料 '.zf-step' format: 'html' // 作者 name: 'author' selector: '.user-shuju p' format: 'text' // 标签 name: 'tags' format: 'default' defaultValue: '美食' '健康' // 评论数 name: 'comments' format: 'default' defaultValue: 0 isNumber: true // 阅读数 name: 'hits' format: 'text' selector: '.zuofa-tit-bar .zf-t4 .s-cf64' defaultValue: 0 isNumber: true // 点赞数 name: 'likes' format: 'text' selector: '.zuofa-tit-bar .zf-t4 .zanBtn' defaultValue: 0 isNumber: true // 发布日期 name: 'published_at' format: 'text' selector: '.zuofa-tit-bar .zf-t2 dd:last-child span' isTimestamp: true // 网页关键字 name: 'keywords' format: 'meta' selector: 'meta[name="keywords"]' // 网页描述 name: 'description' format: 'meta' selector: 'meta[name="description"]' // 是否模拟用户请求 userAgent: null // 编码 默认utf-8 charset: null // 页面格式[html/json/jsonp] format: 'html';
测试示例
const ZhmsParser = ZhmsParser const parser = const url = 'http://www.zhms.cn/userhome/678'// const url = 'http://www.zhms.cn/zf/499687.html' let errorItems = // 测试获取内容 { try const result = await parser console catch e console errorItems }// 检测链接是否是详情页 { try const result = parser console catch e console errorItems }// 测试页面链接的唯一标示 { try const result = parser console catch e console errorItems } // 获取详情页内容 { try const result = await parser console catch e console errorItems } // 获取详情页内容 { try const result = await parser console catch e console errorItems } // 测试入口 { console console console await console console console console console console console console console await console console console await console console console if errorItemslength console else console }