作者:碎碎酱
Node Crawler的目标是成为最好的node.js爬虫工具,目前已经停止维护。
特性:
- 简洁的API
- 服务端DOM以及jQuery语法操作DOM(默认Cheerio实现,可以修改为JSDOM)
- 可配置的缓冲池大小以及自动失败重试
- 请求优先级
- forceUTF8模式使其可以自动进行编码检测以及转码
- 本地缓存
- 支持node.js 0.10及更高版本
示例代码:
我们来抓取光合新知博客tech栏目中的文章信息。
访问http://dev.guanghe.tv/category/tech/
,右键查看页面源代码,可以看到文章信息等内容,如下所示:
1 2 3 4 5 6 7 8 9 10
| <ul class="posts"> <li> <span class="post-date">Dec 31, 2015</span> <a class="post-link" href="/2015/12/Getting-Started-With-React-And-JSX.html">React和JSX入门指导</a> </li> <li> <span class="post-date">Dec 30, 2015</span> <a class="post-link" href="/2015/12/ReactJS-For-Stupid-People.html">React 懒人教程</a> </li> </ul>
|
因为每篇文章都是一个<li>
标签,所以我们从页面代码的所有<li>
中获取文章的发布时间、链接和标题。
爬虫代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var Crawler = require('crawler'); var crawler = new Crawler({ maxConnections: 10, callback: function(err, result, $) { $('li').each(function(index, li) { console.log(index + ' :'); console.log('time:' + $(li).children(0).text()); console.log('url:' + result.uri + $(li).children(1).attr('href')); console.log('title:' + $(li).children(1).text()); }); } }); crawler.queue('http://dev.guanghe.tv/category/tech/');
|
npm install
安装crawler模块,node app.js
运行程序。
你将会获得如下内容(仅展示部分内容):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 0 : time:Dec 31, 2015 url:http://dev.guanghe.tv/category/tech//2015/12/Getting-Started-With-React-And-JSX.html title:React和JSX入门指导 1 : time:Dec 30, 2015 url:http://dev.guanghe.tv/category/tech//2015/12/ReactJS-For-Stupid-People.html title:React 懒人教程 2 : time:Dec 24, 2015 url:http://dev.guanghe.tv/category/tech//2015/12/iOSCustomProblem.html title:iOS开发常见问题 3 : time:Dec 17, 2015 url:http://dev.guanghe.tv/category/tech//2015/12/iOSXcodeDebug.html title:Xcode Debug技巧
|