iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
0
Software Development

[行銷也要自動化] 用 Python Selenium + NodeJS + Amazon EC2 打造簡易關鍵字搜尋報表應用!系列 第 5

Day4:NodeJS req.query() 應用|KeywordSearch 1.0 爬蟲關鍵字報表工具

什麼是KeywordSearch 1.0 爬蟲關鍵字報表工具?
是作者近期兩周實作出來的小專案,把不同關鍵字搜尋工具的api及部分爬蟲寫在nodejs App當中,讓使用者可以一鍵拿到搜尋趨勢和相似詞組推薦。此專案尚有很大擴充空間,未來在作者自己的部落格若有進一步更新,會回來附在此處:________

為什麼要做KeywordSearch 1.0?
精闢有效的前導市調可以避免不符市場需求的產品出現,定期觀測關鍵字趨勢,是網路行銷或市場分析人員的日常;但網路資訊四散各地,市調人除了大量閱讀、蒐集、篩選判斷外,還要把資料整理過後呈現給團隊,這個過程非常需要耐心、想像力、判斷力、大把時間,能夠獨立做出完整市調非常不容易;因此作者和朋友想幫市調人員節省文書、搜尋時間,讓他們能專注在判斷、分析上。

現在進度到哪了?為什麼文章是有關nodejs?
這個工具已經開發完成,現在在測試修改中,這30天文章是想把自己的開發過程完整記錄下來。第一周的進度是初步架好NodeJS App的基底,以及在jupyter上測試爬蟲script。

如題,今天來實作req.query的部分。

  1. 回到我們的index.js,首先記得要把我們在about.js已經設定好的Express和router方法用過來:
    (import express、用Router()新增一個實例)
// index.js
var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('index', {
        title: 'MyAppName'
    });
});

module.exports = router;
  1. 接著,因為待會我們需要呼叫req.query(一個Express的API,用來取得網址參數的方法)
    所以在前面先引入request套件:
// index.js
var express = require('express');
var router = express.Router();
+ var request = require('request');

router.get('/', function(req, res, next) {
    res.render('index', {
        title: 'MyAppName'
    });
});

module.exports = router;
  1. 接下來,我們先用console.log測試一下是否能拿到對的網址參數:
// index.js
var express = require('express');
var router = express.Router();
var request = require('request');

router.get('/', function(req, res, next) {
    + console.log(req.query.keywords);
    res.render('index', {
        title: 'MyAppName'
    });
});

module.exports = router;

先運行node www發布後,前往localhost:3000?keywords=testing
再回到terminal看,如果有出現"testing"就表示成功了。其實今天的好像有點太簡單XD

  1. 最後我們把這個方法寫進模板中,讓他回傳keyword到頁面上
// index.js
var express = require('express');
var router = express.Router();
var request = require('request');

router.get('/', function(req, res, next) {
    + var keywords = req.query.keywords; // 先存到keywords這個變數
    res.render('index', {
        title: 'MyAppName',
        + keywords: keywords // 再render到模板中
    });
});

module.exports = router;

記得要到index.ejs去微改我們的模板:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= title %></h1>
    <p>Welcome to <%= title %></p>
    + <p>Your keyword is <%= keywords %></p>
  </body>
</html>

完成以後重新運行node www發布,然後再次前往localhost:3000?keywords=testing
如果你有看到"Your keyword is testing",就表示OK啦

補充:

如果使用者輸入的值中間含有空格,可使用decodeURIComponent來還原,也方便後續繪成圖表時抓到正確的數據。

// index.js
var express = require('express');
var router = express.Router();
var request = require('request');

router.get('/', function(req, res, next) {
    + var keywords = decodeURIComponent(req.query.keywords);
    res.render('index', {
        title: 'MyAppName',
        + keywords: keywords
    });
});

module.exports = router;

今天的小練習就到這邊,明天來介紹更多ejs模板的應用,像是如何載入json資料等


上一篇
Day3:關於middleware的小示範|KeywordSearch 1.0 爬蟲關鍵字報表工具
下一篇
Day5:NodeJS .ejs 模板載入json資料|KeywordSearch 1.0 爬蟲關鍵字報表工具
系列文
[行銷也要自動化] 用 Python Selenium + NodeJS + Amazon EC2 打造簡易關鍵字搜尋報表應用!14

尚未有邦友留言

立即登入留言