node爬取某app数据_使用NodeJs,实现数据抓取

学习笔记

前言

近期做一个数据抓爬工具,最开始使用的是C#控制台应用,同时正则表达式去过滤数据,看着还行,可每次运行都依附于.net framework很是不爽,于是想整点其他的方法。本人还是比较喜欢javascript的,思来想去决定用服务器端的javascript来试试!

环境、工具准备

1、[必装] 安装nodejs,下载最新nodejs,点击此处

2、[选装] 安装iisnode,以及rewrite,因为我是以IIS作为Server,所以用到了这2个IIS的拓展插件,假如仅仅只是cmd控制台运行node则这第二项忽略

3、附加信息:当安装成功之后,在IIS下回出现URL重写这么个东东

范例实现

我以一个小小的案例来实现这么个功能,咱们去抓下面这个站点的数据测试一下:http://www.jj59.com/

原网站截图如下:

接下来我要做的就是

1、将指定页的列表页中文章的标题与对应链接过滤出来,然后返回json数组

2、将详情页文章标题,作者,创建时间,内容过滤出来,然后返回json对象

具体nodejs代码于运行结果

1 var http = require('http');2 var _url = require('url'); //引用url模块,处理url地址相关操作

3 var cheerio = require("cheerio"); //引用cheerio模块,使在服务器端像在客户端上操作DOM,不用正则表达式

4 var iconv = require('iconv-lite'); //解决编码转换模块

5 var BufferHelper = require('bufferhelper'); //关于Buffer我后面细说

6 /*

7 *最后我需要达到的效果是,给予一个访问地址,形如:http://www.mynode.com?link=www.abc.com&callback=cb8 *我希望可以返回json,也可返回jsonp9 */

10

11 http.createServer(function(req, res) {12 var arg = _url.parse(req.url, true).query; //通过调用url模块,获取查询字符串参数集合

13 var link = arg.link; //获取抓取的link

14 var callback = arg.callback; //回调函数的名称

15 //若没有对link加上http,则补全

16 var protocol = "http";17 if (link.indexOf("http") < 0) {18 link = protocol + "://" +link;19 }20 //抓取页面

21 download(link, function(data) {22 res.writeHead(200, {23 "Content-Type": "text/html;charset=utf-8&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值