美文网首页
node爬虫

node爬虫

作者: 一个小前端程序员 | 来源:发表于2019-02-15 15:53 被阅读0次

以下代码爬取豆瓣电影网的数据并且写入数据库
首先安装cheerio和mysql

npm i cheerio -s
npm i mysql -s
// 加载http模块
var https = require('https');
// Cheerio 是一个Node.js的库, 它可以从html的片断中构建DOM结构,然后提供像jquery一样的css选择器查询
var cheerio = require('cheerio');
// 数据库初始化
//连接数据库
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'nodejs'
});
connection.connect();

// 定义网络爬虫的目标地址:豆瓣电影的现在热映
var url = 'https://movie.douban.com/cinema/nowplaying/chongqing/';

//开始获取目标地址数据
https.get(url, function(res) {
    var html = '';
    // 获取页面数据
    res.on('data', function(data) {
        html += data;
    });
    // 数据获取结束
    res.on('end', function() {
        // 通过过滤页面信息获取实际需求的信息
        filterMovieInfo(html);
    });
}).on('error', function() {
    console.log('获取数据出错!');
});

/* 过滤页面信息 */
function filterMovieInfo(html) {
    if (html) {
        // 沿用JQuery风格,定义$
        var $ = cheerio.load(html);
        // 根据id获取轮播图列表信息
        var slideList = $('.lists');
        /* 轮播图列表信息遍历 */
        slideList.children('li').each(function(item) {
            var pic = $(this);
            // 找到a标签并获取href属性
            var pic_href = pic.find('.poster').children('a').attr('href');
            // 找到a标签的子标签img并获取_src
            var pic_src = pic.find('.poster').children('a').find('img').attr('src');
            // 找到a标签的子标签img并获取alt
            var pic_message = pic.find('.poster').children('a').find('img').attr('alt');
            // 向数组插入数据
            var data = {
                pic_href : pic_href,
                pic_message : pic_message,
                pic_src : pic_src,
            }
            //调用getInfo(),通过pic_href获取电影详情页的数据
            getInfo(pic_href,data);
        });
    } else {
        console.log('无数据传入!');
    }
}

//通过爬到的链接pic_href,再去爬取电影详情页的影片简介
function getInfo(url,json){
    https.get(url, function(res) {
        var html = '';
        // 获取页面数据
        res.on('data', function(data) {
            html += data;
        });
        // 数据获取结束
        res.on('end', function() {
            if (html) {
                // 沿用JQuery风格,定义$
                var $ = cheerio.load(html);
                //获取到页面上的电影简介
                var string = $('#link-report').text();
                //未替换\n和空格会导致无法写进数据库
                string = string.replace(/\n/g,"");
                string = string.replace(/\s/g,"");
                //写入数据库
                var  addSql = 'INSERT INTO doubanmovie(moviename,movieinfo,movieimg) VALUES(?,?,?)';
                var  addSqlParams = [json.pic_message, string, json.pic_src];
                //增
                connection.query(addSql,addSqlParams,function (err, result) {
                    if (err) throw err;
                    console.log('写入成功')  
                });
            }
        });
    }).on('error', function() {
        console.log('获取数据出错!');
    });
}

相关文章

  • node爬虫之路(一)

    最近对爬虫很感兴趣,我们node.js也是可以写爬虫。所以写一个node爬虫系列,记录我的爬虫之路,感兴趣的同学可...

  • node爬虫快速入门

    node爬虫 初入前端,刚刚接触node,对于耳闻已久的node爬虫非常神往,所以有了这篇文章,项目代码在文章末尾...

  • node入门场景之——爬虫

    边做边学效率更高,爬虫是node的适用场景之一,关于爬虫的另一篇文章node爬虫进阶之——登录为了验证“经验总结、...

  • node 爬虫

    clawer.js

  • node爬虫

    node爬虫用到的第三方模块 Cheerio 服务端的jQueryhttps://segmentfault.c...

  • Node爬虫

    使用cheerio爬虫模块抓取页面后获取元素信息跟jQuery基本一样

  • node爬虫

    /** 教程:https://blog.csdn.net/Qc1998/article/details/83154...

  • node 爬虫

  • node爬虫

    声明:所有文章都是转载整理的,只是为了自己学习,方便自己观看,如有侵权,请立即联系我,谢谢~ Node.js的学习...

  • node爬虫

    以下代码爬取豆瓣电影网的数据并且写入数据库首先安装cheerio和mysql

网友评论

      本文标题:node爬虫

      本文链接:https://www.haomeiwen.com/subject/zkfmeqtx.html