资讯专栏INFORMATION COLUMN

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

legendaryedu / 1504人阅读

摘要:接着上篇爬虫抓取豆瓣电影网页数据上本篇主要描述将上次抓取的数据存入数据库前提百度或谷歌的安装教程,安装本地并成功运行推荐一款数据库可视化管理工具。

接着上篇 Nodejs爬虫--抓取豆瓣电影网页数据(上)
本篇主要描述将上次抓取的数据存入mongodb数据库

前提:百度或谷歌mongodb的安装教程,安装本地并成功运行
推荐一款mongodb数据库可视化管理工具:Robomongo。可以加群264591039获取安装包或自行寻找资源

首先用npm安装第三方数据库操作包:mongoose.

关于mongoose详情请查看官方文档

npm install --save-dev mongoose
引入mongoose包开始对mongodb进行管理

当前目录下新建一个mongo.js文件方便管理,在该文件中引入相关包:

let mongoose = require("mongoose"),
    assert = require("assert");

获取表构造器Schema并映射mongodb相应的collection
let Schema = mongoose.Schema;

let filmSchema = new Schema({       //自定义相应的表数据字段
        title: String,
        type: String,
        directories: String,
        scriptwriter: String,
        actors: String
    });
//映射collection并生成model对象用于管理数据表的增删改查
//默认是映射到名为films的collection
//若自定义表明则:let filmSchema = new Schema({..}, { collection: "data" });  "data"即为自定义名称
let Film = mongoose.model("Film", filmSchema);      
连接mongodb数据库并exports Film对象
let db = 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};
在spider.js中引入Film对象并添加入库操作代码
let mongo = require("./mongo");
//在请求网页的end函数中添加入库操作
xxxx.end((err, res) => {
    var $ = cheerio.load(res.text);     //用cheerio获取整个页面DOM对象
    var _data = {title:"", type: "", directories: "", scriptwriter: "", actors: ""};
    _data.title = $("#content h1 span").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(doc);
                    });
});
            
运行spider.js,并查看数据库中的数据
node spider.js
//用上述提到的可视化工具查看数据库是否成功有数据入库

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81504.html

相关文章

  • Nodejs爬虫--抓取豆瓣电影网页数据

    摘要:接着上篇爬虫抓取豆瓣电影网页数据上本篇主要描述将上次抓取的数据存入数据库前提百度或谷歌的安装教程,安装本地并成功运行推荐一款数据库可视化管理工具。 接着上篇 Nodejs爬虫--抓取豆瓣电影网页数据(上) 本篇主要描述将上次抓取的数据存入mongodb数据库 前提:百度或谷歌mongodb的安装教程,安装本地并成功运行 推荐一款mongodb数据库可视化管理工具:Robomongo...

    techstay 评论0 收藏0
  • nodejs练手爬虫+API测试

    摘要:知乎日报代理首先感谢提供的分析使用详情请参考他提供的参数和地址代理转发的使用为前缀进入代理路由启动界面图像获取后为图像分辨率,接受任意的格式,为任意非负整数,返回值均相同返回值示例最新消息等具体参考提供的分析中的使用方式以及参数含义。 项目说明 这是一个基于express的node后端API服务,当时只是想抓取字幕组网站的下载资源,以备以后通过nas的方式去自动下载关注的美剧。不过后来...

    bigdevil_s 评论0 收藏0
  • 爬虫 - 收藏集 - 掘金

    摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...

    1fe1se 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<