【问题标题】:Node.js - Get google results in JSONNode.js - 以 JSON 格式获取谷歌结果
【发布时间】:2016-02-12 21:44:49
【问题描述】:

我正在迭代 2 个数组,以便构建 google 搜索,如果任何搜索结果包含来自两个数组的内容,则返回 true。使用 Node.js,获取可消费 json 结果的最佳方式是什么?

module.exports = function(context, cb) {
    var google = require('googleapis');
    var request = require('request');
    var url = 'https://www.googleapis.com/customsearch/v1?key='+context.data.key+'&cx='+context.data.cx+'&q=lectures';
    console.log(url);
    request(url,function(error, response, result){
        if(!error){
            console.log(result);
            cb(null, result);
        }
    });
};

给出以下错误:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. The API (CustomSearch API) is not enabled for your project. Please use the Google Developers Console to update your configuration.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "Access Not Configured. The API (CustomSearch API) is not enabled for your project. Please use the Google Developers Console to update your configuration."
 }

这是接近但不是Getting Error 403: Access Not Configured. Please use Google Developers Console to activate the API for your project的副本

【问题讨论】:

标签: javascript json node.js google-api


【解决方案1】:

NODE.JS 将 GTFS 文件转换为 json。
在 mongoDB 中以 json 格式添加文件内容

var request = require('request');
var express = require('express');
var app = express();
var GtfsRealtimeBindings = require('gtfs-realtime-bindings');

var mysql = require('mysql');
var mongo = require('mongodb');

var jsonData

var requestSettings = {
    method: 'GET',
    url: 'http://datamine.mta.info/mta_esi.php?key=948444f7ec34a8c264a22d2b044d88d6&feed_id=1',
    encoding: null
};

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";


app.get('/', function (req, res) {
    request(requestSettings, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            jsonData = GtfsRealtimeBindings.FeedMessage.decode(body);
            // jsonData.entity.forEach(function (entity) {
            //     if (entity.trip_update) {
            res.send(jsonData);
            //     }
            // });
            MongoClient.connect(url, function (err, db) {
                if (err) throw err;
                var dbo = db.db("mydb");
                dbo.collection("customers").insertMany(jsonData.entity, function (err, res) {
                    if (err) throw err;
                    console.log("Number of documents inserted: " + res.insertedCount);
                    db.close();
                });
            });
        }
    });
});





app.listen(3010, () => console.log('Example app listening on port 3010!'))

【讨论】:

    【解决方案2】:

    您可以使用SerpApi 等第三方服务来抓取 Google 并取回结构化 JSON。

    使用Node.js library 的示例:

    var gsr = require('GoogleSearchResults')
    let serp = new gsr.GoogleSearchResults("demo")
    serp.json({
     q: "Coffee", 
     location: "Portland"
    }, (result) => {
      console.log(result)
    })
    

    【讨论】:

      【解决方案3】:

      这里忘记启用api了https://console.developers.google.com/apis/api/customsearch/overview?project=ai-query

      感谢@djechlin 指出几乎重复的答案。

      【讨论】:

        猜你喜欢
        • 2020-05-24
        • 2016-12-25
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多