node.js crawler和sql模組的基本使用

2020-08-11 20:33:09

crawler(爬蟲)模組

適用於Node的功能最強大,最受歡迎和生產中的抓取/抓取軟體包,祝您駭客愉快:)

安裝

下載node.js後 首先先在終端進行初始化

$ npm init -y

然後在終端中進行爬蟲模組的安裝

npm i crawler

基本用法

// 匯入crawler包
var Crawler = require("crawler");

// 建立爬蟲物件
var c = new Crawler({
    maxConnections : 10,
    
    // 爬完一個數據  會觸發的事件
    callback : function (error, res, done) {
        if(error){
            console.log(error);
        }else{
        // 爬去網站之後  爬蟲模組提供的一個$物件  $可以讓我們以jQuery的方法來存取數據
        
            var $ = res.$;
            
            console.log($("title").text());
        }
        done();
    }
});
 
//需要進行爬蟲的網址
c.queue('http://www.amazon.com');
 
// Queue a list of URLs
c.queue(['http://www.google.com/','http://www.yahoo.com']);
 
// Queue URLs with custom callbacks & parameters
c.queue([{
    uri: 'http://parishackers.org/',
    jQuery: false,
 
    // The global callback won't be called
    callback: function (error, res, done) {
        if(error){
            console.log(error);
        }else{
            console.log('Grabbed', res.body.length, 'bytes');
        }
        done();
    }
}]);
 
// Queue some HTML code directly without grabbing (mostly for tests)
c.queue([{
    html: '<p>This is a <strong>test</strong></p>'
}]);

案例

// 匯入crawler包
var Crawler = require("crawler");

// 匯入fs模組
var fs = require("fs");

// 建立爬蟲物件
var c = new Crawler({

    // 最大的連線數
    maxConnections: 10,

    // This will be called for each crawled page
    // 爬完一個數據  會觸發的事件
    callback: function (error, res, done) {
        if (error) {
            console.log(error);
        } else {

            // 爬去網站之後  爬蟲模組提供的一個$物件  $可以讓我們以jQuery的方法來存取數據
            var $ = res.$;

            var str = "";

            var foodArr = [];

            $(".thumbnail").each((index, Element) => {
                const img = $(Element).find("img").attr("src");
                // console.log(img);

                const recipe = $(Element).find(".caption p>a").text();
                // console.log(recipe);

                foodArr.push({
                    imgSrc: img,
                    recipe: recipe
                })
            })

            fs.writeFile("./luowang.json", JSON.stringify(foodArr), (err) => {
                console.log("寫入成功");
            })

        }
        done();
    }
});


c.queue(['https://cqcn.fandom.com/zh/wiki/%E5%8B%87%E5%A3%AB', 'https://cqcn.fandom.com/zh/wiki/%E9%AA%91%E5%A3%AB', 'https://cqcn.fandom.com/zh/wiki/%E5%89%91%E5%A3%AB', 'https://cqcn.fandom.com/zh/wiki/%E5%BC%93%E6%89%8B', 'https://cqcn.fandom.com/zh/wiki/%E7%8C%8E%E4%BA%BA', 'https://cqcn.fandom.com/zh/wiki/%E6%B3%95%E5%B8%88']);

mysql模組

和上面的爬蟲模組的安裝方法是差不多的

安裝

下載node.js後 首先先在終端進行初始化

$ npm init -y

然後在終端中進行mysql模組的安裝

npm i mysql

基本使用

// 匯入mysql模組
var mysql = require('mysql');
// 建立數據庫連線物件 設定相關資訊
var connection = mysql.createConnection({
    host: 'localhost', //主機名
    user: 'root', //使用者名稱
    password: 'root', //密碼
    database: 'test' //數據庫名
});

//建立數據庫連線
connection.connect();

// 操作數據庫
// 1.查詢數據庫數據
// connection.query('select * from students', (error, results, fields) => {
//     if (error) throw error;
//     console.log(results);
// });

// 2.插入數據  insert into 數據表名(屬性名)values(屬性值)
// connection.query('insert into students (name,age,score) values("zs",18,86)', (error, results, fields) => {
//     if (error) throw error;
//     console.log(results);
// });

// 3.刪除 根據某一個id刪除數據
// connection.query('delete from students where id in(5,6,7)', (error, results, fields) => {
//     if (error) throw error;
//     console.log(results);
// });

// 4.修改數據
connection.query('update students set name="隔壁老王",score=100 where id=2', (error, results, fields) => {
    if (error) throw error;
    console.log(results);
});

connection.end();