当前位置: 首页 > 后端技术 > Node.js

Nodejs爬虫--抓取豆瓣电影网页数据(下)

时间:2023-04-03 22:30:31 Node.js

接上一篇Nodejs爬虫--爬取豆瓣电影网页数据(上)本文主要介绍如何将上次抓取的数据存入mongodb数据库前提条件:百度或谷歌mongodb安装教程,本地安装并运行成功推荐一款mongodb数据库可视化管理工具:Robomongo。可加群264591039获取安装包或自行查找资源。首先使用npm安装第三方数据库操作包:mongoose。关于mongoose的详细介绍,请参考官方文档。npminstall--save-devmongoose引入mongoose包,开始管理mongodb。一个mongo.js文件,方便管理,文件中引入相关包:letmongoose=require('mongoose'),assert=require('assert');获取表构造器schema和mapmongodb对应的collectionletSchema=mongoose.Schema;letfilmSchema=newSchema({//自定义对应的表数据字段title:String,type:String,directories:String,scriptwriter:String,actors:String});//映射集合,生成模型对象,管理数据表的增删改查//默认映射到名为films的集合//如果自定义:letfilmSchema=newSchema({..},{集合:'数据'});'data'是自定义名称letFilm=mongoose.model('Film',filmSchema);连接到mongodb数据库并导出电影对象letdb=mongoose.connect('mongodb://127.0.0.1:27017/spider');db.connection.on('error',(err)=>{console.log(`数据库连接失败:${err}`);});db.connection.on('open',()=>{console.log('数据库连接成功');});module.exports={Film:Film};在蜘蛛中。在js中引入Film对象并添加存储操作代码letmongo=require('./mongo');//在end函数中添加存储操作xxxx.end((err,res)=>{var$requestedwebpage=cheerio.load(res.text);//使用cheerio获取整个页面DOM对象var_data={title:'',type:'',directories:'',scriptwriter:'',actors:''};_data.title=$('#contenth1span').text();_data.directories=$('#info.attrs').eq(0).text();_data.scriptwriter=$('#info.attrs').eq(1).text();_data.actors=$('#info.attrs').eq(2).text();$('span[property="v:genre"]').each(function(index){_data.type+=($(this).text()+(index==$('span[property="v:genre"]').length-1?'':','));});console.log(_data);mongo.Film.create(_data,(err,doc)=>{assert.equal(err,null);console.log(文档);});});运行spider.js,查看数据库中的数据节点spider.js//使用上面提到的可视化工具查看数据库是否成功入库