1. 程式人生 > >Node.js --- 使用koa2編寫入門級資料爬蟲

Node.js --- 使用koa2編寫入門級資料爬蟲

在閱讀本文前請先確保已安裝好node.js(點選此處下載node.js)配置好環境變數相關(點選此處跳轉安裝配置教程),本文編輯器為vscode(點選此處下載vscode)IDE可根據個人喜好使用,那麼下載好執行環境和編輯的IDE之後,就開始了。

node.js + koa2爬蟲需要中介軟體列表

  1. cheerio: 爬蟲資料抓取的中介軟體
  2. superagent-charset: 解決爬蟲資料中文亂碼問題
  3. koa-router: koa路由,用於根據路由訪問對應程式碼塊,邏輯編寫等作用(把他理解為像日常API介面就好)
  4. koa2: 搭建伺服器環境等等(詳情可點選這裡

開啟vscode,首先建立一個資料夾在這裡我就命名為doujiang,然後再資料夾內建立一個檔案,dou.js之後就可以開始了


在這裡插入圖片描述

在doujiang目錄下在vscode中開啟終端,快捷鍵為ctrl + ~(tab上面的那個按鍵)
在這裡插入圖片描述
進入目錄後輸入命令進行所需中介軟體下載

那麼瞭解了所需要下面的東西是什麼之後,就進行下載操作吧,如果安裝好了淘寶映象也可以使用cnpm

//一行命令就可以下載全部啦
npm i --save cheerio superagent-charset koa-router koa2

等待所需中介軟體下載完畢後,就開始編寫程式碼,首先使用require進行引入

const Koa = require('koa'),
    Router = require('koa-router'),
    cheerio = require('cheerio'),
    superagent = require('superagent-charset'),
    app = new Koa(),
    router = new Router();

然後編寫路由和搭建伺服器環境

router.get('/', function(ctx, next) {
    ctx.body = "路由搭建好啦";
});

app
    .use(router.routes())
    .use(router.allowedMethods());

app.listen(3000, () => {
    console.log('[服務已開啟,訪問地址為:] http://127.0.0.1:3000/');
});

環境搭建好後使用 node dou.js: http://127.0.0.1:3000/ 就可以訪問了
在這裡插入圖片描述
看見瀏覽器這樣就恭喜你了,成功了搭建了環境
在這裡插入圖片描述
那麼接下來,就開始編寫爬蟲需要程式碼了,首先要確定需要爬的網站,這裡我們去爬百度新聞,然後爬這個地方的列表文字

在這裡插入圖片描述

const Koa = require('koa'),
    Router = require('koa-router'),
    cheerio = require('cheerio'),
    superagent = require('superagent-charset'),
    app = new Koa(),
    router = new Router();
let arr;

router.get('/', function(ctx, next) {
    url = 'https://news.baidu.com/'; //百度新聞地址

    //superagent不理解,請在文章開頭的地方尋找了解superagent,點選進去理解
    superagent.get(url)
        .charset('utf-8') //當前頁面編碼格式
        .end((err, sres) => { //頁面獲取到的資料
            let html = sres.text,
                $ = cheerio.load(html, {
                    decodeEntities: false
                }), //用cheerio解析頁面資料
                obj = {};
            arr = [];

            //下面類似於jquery的操作,前端的小夥伴們肯定很熟悉啦
            $(".hotnews ul li").each((index, element) => {
                var $text = $(element).text();
                arr.push($text);
            });

        });
    ctx.body = arr;
});

app
    .use(router.routes())
    .use(router.allowedMethods());

app.listen(3000, () => {
    console.log('[服務已開啟,訪問地址為:] http://127.0.0.1:3000/');
});

再次在命令列視窗輸入命令:node dou.js 就可以愉快的在瀏覽器看見這個畫面了
在這裡插入圖片描述
恭喜你,你的第一個node爬蟲完成啦~

注意的是,如果小夥伴去抓取其他頁面出現亂碼
在這裡插入圖片描述

可能就是程式碼的編碼格式和要抓取頁面的編碼格式不一樣導致的,要注意一下
在這裡插入圖片描述
在這裡插入圖片描述

以上就是本文的全部內容,希望幫到你