nodejs实现简单爬虫爬取http://web.jobbole.com/网址数据

node实现简单的爬虫

一、基本环境

  • 1、window7
  • 2、node8.9.3

二、环境搭建

  • 1、新建一个文件并在文件中的黑窗口中执行

    npm init --yes
    复制代码
  • 2、安装依赖包

    yarn add cheerio // Node.js 版的jQuery
    yarn add iconv-lite // 处理网站编码的问题
    yarn add mysql // 非必须的,只是存入mysql数据库
    复制代码

三、实现简单的抓取网页上的数据

  • 1、核心代码

    var cheerio = require('cheerio');
    var http = require('http');
    var iconv = require('iconv-lite');
    var fs = require('fs');
    // 设置需要抓取的网页
    var url = 'http://www.jobbole.com/';
    
    http.get(url, function(sres) {
      var chunks = [];
      sres.on('data', function(chunk) {
        chunks.push(chunk);
      });
      sres.on('end', function() {
        // 定义一个临时存储数据的字段
        var result = {
          news: [],
          web: []
        };
        // 设置编码
        var html = iconv.decode(Buffer.concat(chunks), 'utf-8');
        // 使用类似jq的选择器
        var $ = cheerio.load(html, {decodeEntities: false});
        $('#widgets-homepage-fullwidth > div:nth-child(3) .grid-4').each((idx, element) => {
          var $element = $(element);
          $element.find('.floated-thumb').each(function(index, ele) {
            var url = $(ele).find('.post-thumb > a > img').attr('src');
            var title = $(ele).find('.post-meta .meta-title').text();
            result.news.push({
              imgUrl: url,
              title: title
            });
          });
        });  
        // 获取web数据
        $('#widgets-homepage-fullwidth > div:nth-child(7) > .floated-thumb').each((index, ele) => {
          var imgUrl = $(ele).find('.post-thumb > a > img').attr('src');
          var text = $(ele).find('.post-meta > p > a.meta-title').text();
          result.web.push({
            imgUrl: imgUrl,
            text: text
          });
        });
        // 把数据写入到本地
        fs.writeFile('./11.json', JSON.stringify(result, null, 2), { 'flag': 'w+' }, (error) => {
          if (error) {
            console.error('错误');
          }
          console.info('成功');
        });   
      });
    });
    复制代码
  • 2、上面使用类似jq的选择器中选择器可以使用下面方式复制

打开浏览器控制台->elements->右键->copy->copy selector

  • 3、参考代码(main1.js)

四、将爬取的数据存入数据库中,参考代码(main2.js)

五、分页抓取数据,参考代码(main3.js)

六、参考代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值