node.js爬虫入门 导出json文件并导入数据库(一)

sql


-- ----------------------------
DROP TABLE IF EXISTS `websites`;
CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `job`;
//属性定义可能不严谨,第一次定义
CREATE TABLE `job` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` char(20) NOT NULL DEFAULT '' COMMENT '题目',
  `money` varchar(20) NOT NULL DEFAULT '' COMMENT '薪资',
  `company` char(11) NOT NULL DEFAULT '0' COMMENT '公司',
  `position` char(10) NOT NULL DEFAULT '' COMMENT '描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------

DROP TABLE IF EXISTS `php`;
CREATE TABLE `php` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` char(20) NOT NULL DEFAULT '' COMMENT '题目',
  `money` varchar(20) NOT NULL DEFAULT '' COMMENT '薪资', 
  `company` char(11) NOT NULL DEFAULT '0' COMMENT '公司',
  `position` char(10) NOT NULL DEFAULT '' COMMENT '描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
--  Records of `websites`
-- ----------------------------
BEGIN;
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

依赖

npm install cheerio --save-dev // 后面会用到,用于抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现
npm install superagent	--save-dev 
npm i mysql -S  //可以自定义想要的

app.js

//导入依赖包
const fs = require("fs");

const superagent = require("superagent");
const cheerio = require("cheerio");

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'xxxxxxx',
    user: 'xxxx',
    password: 'xxxxx',
    port: '3306',
    database: 'xxxxx'//远程的话,自己对应好
});


connection.connect();



superagent
    .get("https://www.zhipin.com/job_detail/?query=&city=100010000&industry=&position=110302") //地址倒是改成你目的地址
    .end((error, response) => {
        //获取页面文档数据
        var content = response.text;
        //cheerio也就是nodejs下的jQuery  将整个文档包装成一个集合,定义一个变量$接收
        var $ = cheerio.load(content);
        //定义一个空数组,用来接收数据
        var result = [];
        //分析文档结构  先获取每个li 再遍历里面的内容(此时每个li里面就存放着我们想要获取的数据)
        $(".job-list li .job-primary").each((index, value) => {
            var title = $(value).find(".name .job-title").text();
            var money = $(value).find(".name .red").text();
            var company = $(value).find(".info-company a").text();
            var position = $(value).find(".info-publis .name").text();
            result.push({
                title: title,
                money: money,
                company: company,
                position: position,
            });
            var addSql = 'INSERT INTO job(Id,title,money,company,position) VALUES(0,?,?,?,?)';
            var addSqlParams = [title, money, company, position];
            //增
            connection.query(addSql, addSqlParams, function (err, result) {
                if (err) {
                    console.log('[INSERT ERROR-] - ', err.message);
                    return;
                }
            });
        });
        //将数组转换成字符串
        result = JSON.stringify(result);
        //将数组输出到json文件里  刷新目录 即可看到当前文件夹多出一个boss.json文件(打开boss.json文件,ctrl+A全选之后 ctrl+K,再Ctrl+F即可将json文件自动排版)
        fs.writeFile("boss1.json", result, "utf-8", (error) => {
            //监听错误,如正常输出,则打印null
            if (error == null) {
                console.log("恭喜您,数据爬取成功!)");
            }
        });
    });
// connection.end(); 如果不注销的会报错 2013 

node app.js

可视化工具 navicat

在这里插入图片描述
在这里插入图片描述
可以发现,node.js对前端还是很友好的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值