当前位置:
首页
文章
前端
详情

Node.js实现简易爬虫(2)

关注“重度前端”

助力前端深度学习

━━━━━

Node.js实现简易爬虫(2)

前言

咱们继续上一篇继续将这个小爬虫的功能再完善一下。

获取电影下载连接

如果是人工操作,我们需要一次操作,通过点击进入电影详情页才能找到下载地址
那我们通过node如何来实现呢

常规先来分析页面布局

Node.js实现简易爬虫(2)

我们如果想要准确定位到下载链接,需要先找到idZoom的div,下载链接就在这个div下的tr下的a标签内。

那我们就再定义一个函数,用于获取下载链接

getBtLink()

function getBtLink(urls, n) { //urls里面包含着所有详情页的地址  console.log("正在获取第" + n + "个url的内容");  http.get('http://www.ygdy8.net' + urls[n].title, function(sres) {    var chunks = [];    sres.on('data', function(chunk) {      chunks.push(chunk);    });    sres.on('end', function() {      var html = iconv.decode(Buffer.concat(chunks), 'gb2312'); //进行转码      var $ = cheerio.load(html, {decodeEntities: false});      $('#Zoom td').children('a').each(function (idx, element) {        var $element = $(element);        btLink.push({          bt: $element.attr('href')        })      })      if(n < urls.length - 1) {        getBtLink(urls, ++count); //递归      } else {        console.log("btlink获取完毕!");        console.log(btLink);         }    });  });}

再次运行 node index

Node.js实现简易爬虫(2)

Node.js实现简易爬虫(2)

就这样我们将3个页面内所有电影的下载链接获取完毕,是不是很简单?

保存数据

我们讲这些数据爬取出来当然是要进行保存的啊,在这里我选用了MongoDB来对其进行保存处理

数据保存函数 save()

function save() {  var MongoClient = require('mongodb').MongoClient; //导入依赖  MongoClient.connect(mongo_url, function (err, db) {    if (err) {      console.error(err);      return;    } else {      console.log("成功连接数据库");      var collection = db.collection('node-reptitle');      collection.insertMany(btLink, function (err,result) { //插入数据        if (err) {          console.error(err);        } else {          console.log("保存数据成功");        }      })      db.close();    }  });}

这里的操作很简单,就没必要上mongoose啦
再次运行 node index

Node.js实现简易爬虫(2)

这个Node.js实现的爬虫就是这样了,祝大家能爬到自己想要的数据;)

源码地址:https://github.com/HuangXiZhou/node-reptitle

总结:

本文这个小爬虫用了两篇文章咱们讲完了,从技术上来说还是比较基础的,不过技术这东西都是举一反三的。我们可以思考下爬虫的原理是什么?我能想到的是通过http请求把网页的数据拿到,然后对文档内容进行解析,用了jq的操作习惯。当然如果我们自己写也是可以写的,只是开发体验没这么高级,当然我们也可以实现他的操作方式,只是这个库帮我们处理完了。

关于本文

原文地址:
https://segmentfault.com/a/1190000008745531

都说前端fe不是帅哥就是美女,我说对了【点个赞吧-右下角】

 重度前端****--助力深度学习

为web前端同行提供有价值、有深度的技术文章

官网:http://bigerfe.com【建设中】

Node.js实现简易爬虫(2)

长按二维码关注我

本文分享自微信公众号 - 前端技术江湖(bigerfe)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。