Superagent-scraper 是一个基于 Node.js 环境的网络爬虫工具,它使用了非常流行的 Superagent 库,以及 Cheerio 选择器来向信息提供者发出查询请求,并解析返回的 HTML 页面内容。
安装
我们可以使用 npm 快速地安装 superagent-scraper。
npm install superagent-scraper
引入模块:
const scraper = require("superagent-scraper");
基本使用
此处我们以搜索百度动态内容为例,通过 superagent-scraper 进行爬取。
scraper('http://www.baidu.com', { q: 'superagent_scraper' }, function(err, $) { $('title').text(); // 百度一下,你就知道 });
在上述代码中,我们首先向百度发出了一次查询请求,然后在回调函数中使用了 Cheerio 的选择器来取出 HTML 页面中的标题。
superagent-scraper 在请求结果回调函数中提供一个常用的回文参数,可以使用它将页面源代码作为 JQuery 对象返回。
选择器
Superagent-scraper 采用了 Cheerio 选择器来实现对选择器的支持,Cheerio 寻找元素的方式类似于 jQuery。
通过 Superagent-scraper 我们可以取出选择器的最常见元素(如id、class、标记名称),可以简单的使用 $(‘选择器’) 来得出结果。
例如我们想取出百度首页的最新新闻段落:
scraper('http://news.baidu.com', function(err, $) { $('.hotnews li a').each(function() { console.log($(this).text()); }); });
在上述代码中,我们首先向百度新闻发出了一次请求。然后使用了位于节点上的 class 选择器来取出最新新闻的列表。
当然,Superagent-scraper 也提供了更强大的选择器技巧。
scraper('http://news.baidu.com', function(err, $) { $('ul').filter('.hotnews').children().each(function() { console.log($(this).text()); }); });
在上述代码中,我们查询了网页中所有的 ul 标签,然后使用了 filter 过滤器找到了最新新闻节点。最后,遍历了所有的子节点,并输出了其文本内容。
处理响应
当我们请求了一个网页之后,我们可能会需要对返回的数据进行处理。在 Superagent 中,我们可以使用 .on('data',function(){}) 事件来达到目的。
例如,在下面的代码中,我们请求一个网页,找到响应数据中的一部分,然后在响应结束时打印它。
scraper.get("http://new.cust.edu.cn").on('data', function(data){ console.log(data); }) .on('end', function() {});
处理错误
在 Superagent-scraper 中,错误事件可以被回调处理。在请求到一个错误或响应出现错误时,我们可以使用下面的方法。
scraper.get("http://new.cust.edu.cn").on('error', function(err){ console.error(err.stack); });
这里我们将错误信息打印出来,方便定位问题所在。
结束语
以上就是 Superagent-scraper 的一些基本用法介绍,希望对使用者有所帮助。本文重点讲解了选择器的用法、响应处理、错误处理等。在实际爬取数据时,还可以使用更多的 Superagent-scraper API 进行更深入的操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005571a81e8991b448d406f