node.js写一个简易的文章小爬虫

作者: 白云飞 分类: javascript 发布时间: 2017-05-15 11:29 阅读:

这几天由于工作的原因,需要用到javascript,因此就来看看node.js。感觉用node来做web没多大的意思,本来php做web就已经很好了。既然javascript的dom功能这么强大,不如用它来爬取一些文章更有趣。随便搞一个简单的例子,根据官方的事例,自己加了一点简单的修改。不是很强大,勿喷啊。

首先,我们先选取需要爬取的站点。这里就选择我们公司自己的一个游戏平台站的一个资讯频道,http://www.52gg.com/wyzx/ 这里面有很多的文章。默认打开是一个文章列表页,这样方便我们进行文章的抓取。你们如果进行文章的爬取,也尽量选择列表页,这里的文章比较聚集,方便操作。

先说一下,写这个简易的小爬虫需要哪些模块。

1、http模块

这个模块,是让我们的爬虫拥有访问网站的能力。连网站都不能访问,何来的抓取。我们可以模拟浏览器,去访问目标站点,得到目标站点的响应,得到相应的html。

2、cheerio模块

这个是用来解析html代码的。采用这个模块,我们就不需要写复杂的 正则 去到html中匹配我们所需要的数据了,你可以像在网页中遍历dom节点一样去寻找需要的数据。安装好 node 之后,http模块是自带的,这个cheerio 模块是没有的,因此我们需要先执行:

npm install cheerio

安装完毕之后,就可以开始了。spider.js

const http = require('http');
const cheerio = require('cheerio');

var options = {
  hostname: 'www.52gg.com',
  path: '/wyzx/'
};

var req = http.request(options, (res) => {
  
  res.setEncoding('utf8');

  var html = '';
  res.on('data', (chunk) => {
  	html += chunk;
  });

  res.on('end', () => {
    //console.log('响应中已无数据。');
    var $ = cheerio.load(html);
    var dom = $(".arc_list_l ul li");
    var len = dom.length;
    
    for(let i = 0; i < len; i++){
    	console.log(dom.eq(i).find('a').text());
    }
    
  });

});

req.on('error', (e) => {
  console.log(`请求遇到问题: ${e.message}`);
});

req.end();

通过执行

node spider.js

会得到如下的结果:

李杨转发文章嘲讽杨幂 李杨发文嘲讽杨幂获影后


王者荣耀干将莫邪技能介绍 干将莫邪技能详解


王者荣耀狄仁杰重做技能前瞻 新版狄仁杰技能详解


王者荣耀鬼谷子技能前瞻 新英雄鬼谷子技能详解


战舰世界陆奥怎么样 陆奥性能优缺点评测


网易新游泰亚史诗怎么样好玩吗 泰亚史诗评测


战舰世界密苏里舰长技能加点 密苏里加点推荐


战舰世界纪念珊瑚海战役充值返利 纪念珊瑚海战役充值送自选金币舰


战舰世界槟榔屿夜战活动网址 槟榔屿夜战页面链接


暗黑3观死怎么洗 观死最佳属性词缀


黑色沙漠狩猎系统前瞻 狩猎系统玩法预览


Dota Ti7勇士令状发布 Ti7奖金池超同期Ti6


战舰世界弗林特238元巨惠选购日网址 巨惠选购日页面链接


五四青年节坦克战舰专场盛宴活动网址


战舰世界夺宝集豪礼活动网址 夺宝集豪礼传奇宝箱免费开启


玩家归还星际争霸母盘源代码或暴雪厚礼


马保国约战徐晓东 马保国公开信约战徐晓东


光明大陆北辰1号BOSS打法攻略 北辰1号BOSS打法视频


王者荣耀新版刘备技能一览 刘备改版技能前瞻


战舰世界亨利四世舰长技能加点 亨利四世技能加点推荐


战舰世界亨利四世怎么样 亨利四世优缺点评测


坦克世界T-34-2G FT数据前瞻 T-34-2G FT数据一览


坦克世界虎-131数据前瞻 超测服虎-131数据一览


王者荣耀阿轲连招技巧 阿轲连招秒人推荐


王者荣耀阿轲铭文推荐 阿轲铭文搭配


王者荣耀阿轲出装方案 阿轲出装顺序推荐


战舰世界10倍爆击奖励活动网址 10倍爆击奖励弹球活动页面链接


战舰世界翻牌赢大奖活动网址 翻牌赢大奖页面链接



F:\nodeweb\test>node spider.js
李杨转发文章嘲讽杨幂 李杨发文嘲讽杨幂获影后


王者荣耀干将莫邪技能介绍 干将莫邪技能详解


王者荣耀狄仁杰重做技能前瞻 新版狄仁杰技能详解


王者荣耀鬼谷子技能前瞻 新英雄鬼谷子技能详解


战舰世界陆奥怎么样 陆奥性能优缺点评测


网易新游泰亚史诗怎么样好玩吗 泰亚史诗评测


战舰世界密苏里舰长技能加点 密苏里加点推荐


战舰世界纪念珊瑚海战役充值返利 纪念珊瑚海战役充值送自选金币舰


战舰世界槟榔屿夜战活动网址 槟榔屿夜战页面链接


暗黑3观死怎么洗 观死最佳属性词缀


黑色沙漠狩猎系统前瞻 狩猎系统玩法预览


Dota Ti7勇士令状发布 Ti7奖金池超同期Ti6


战舰世界弗林特238元巨惠选购日网址 巨惠选购日页面链接


五四青年节坦克战舰专场盛宴活动网址


战舰世界夺宝集豪礼活动网址 夺宝集豪礼传奇宝箱免费开启


玩家归还星际争霸母盘源代码或暴雪厚礼


马保国约战徐晓东 马保国公开信约战徐晓东


光明大陆北辰1号BOSS打法攻略 北辰1号BOSS打法视频


王者荣耀新版刘备技能一览 刘备改版技能前瞻


战舰世界亨利四世舰长技能加点 亨利四世技能加点推荐


战舰世界亨利四世怎么样 亨利四世优缺点评测


坦克世界T-34-2G FT数据前瞻 T-34-2G FT数据一览


坦克世界虎-131数据前瞻 超测服虎-131数据一览


王者荣耀阿轲连招技巧 阿轲连招秒人推荐


王者荣耀阿轲铭文推荐 阿轲铭文搭配


王者荣耀阿轲出装方案 阿轲出装顺序推荐


战舰世界10倍爆击奖励活动网址 10倍爆击奖励弹球活动页面链接


战舰世界翻牌赢大奖活动网址 翻牌赢大奖页面链接

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。