使用Node.js从谷歌检索结果计数

时间:2017-03-08 18:35:10

标签: javascript node.js

提供具体细节:

我正在设计一个使用eris library供私人使用的Discord Bot。一个请求的功能是googlefight命令,需要执行以下操作:

  1. 接受用户输入。
  2. 使用输入生成Google搜索网址。
  3. 拉出生成的HTML页面,然后从<div class="sd" id="resultStats">
  4. 中提取文本
  5. 将此结果作为信息输出。
  6. 目前存在的相关代码是:

    const Eris = require("eris");
    const express = require('express');
    const request = require('request');
    const cheerio = require('cheerio');
    const app = express();
    
    ...
    
    bot.registerCommand("googlefight", (msg, args) => {
        if(args.length === 0) {
            return "Invalid input";
        }
        var arrayLength = args.length;
        var searchURL = "https://www.google.com/search?q=";
        for (var i = 0; i < arrayLength; i++) {
            searchURL = searchURL.concat(args[i]);
            if (i + 1 < arrayLength) {
                searchURL = searchURL.concat("%20");
            } else {
    
            }
        }
    
        var text;
    
        app.get('/', function(req, res){
            request(searchURL, function(error, response, html){
                if(!error){
                    var $ = cheerio.load(html);
                    $(.sd).filter(function(){
                        var data = $(this);
                        text = data.children().first().text();
                    })
                }
            })
        })
    
    
        return text;
    },  {
        description: "Result counter",
        fullDescription: "The bot will return the result count of a google search term.",
        usage: "<text>"
    });
    

    我不熟悉这类工作。

    特别破坏的部分是这一部分:

    ...
        app.get('/', function(req, res){
            request(searchURL, function(error, response, html){
                if(!error){
                    var $ = cheerio.load(html);
                    $(.sd).filter(function(){
                        var data = $(this);
                        text = data.children().first().text();
                    })
                }
            })
        })
    ...
    

0 个答案:

没有答案