javascript - 用于 NodeJS 的 Google 自定义搜索 API

标签 javascript node.js google-search-api

我正在尝试使用 google 自定义搜索 API 获取搜索结果的前 5 页 ...

到目前为止,我已经尝试使用嵌套函数来实现结果,但没有成功。 我知道我在搞乱回调,但到目前为止,我还没有找到解决问题的正确方法(不使用 promises 库)。

你们中的一些人能指出我正确的方向吗? 谢谢。

app.get('/assesment', function(req, res){
  console.log('route: /assesment');
  var api_key = '';
  var customsearch = google.customsearch('v1');
  var response = "";
  var number_of_pages = 5;
  var next_page = 1;
  var exit = 0

  const CX      = 'XXXXX';
  const API_KEY = 'XXXXX';
  const SEARCH  = 'Test Query';

  console.log('start');
    // console.log('QUERY PAGE: '+pages);
    doSearch(CX, SEARCH, API_KEY, next_page, function(resp){
        res.send(resp);
    });

//
// Functions
//
function doSearch(_cx, _search, _api_key, _start, callback ){
    var response = '';
        customsearch.cse.list({ cx: _cx, q: _search, auth: _api_key, start: _start }, function (err, resp) {
            if (err) {
                response = JSON.stringify(err);
            } else {
                // Got the response from custom search
                console.log('Result: ' + resp.searchInformation.formattedTotalResults);
                if (resp.items && resp.items.length > 0) {
                    console.log('First result of '+resp.items.length+' is ' + resp.items[0].title);
                    for (var i = 0; i < resp.items.length; i++) {
                        response += resp.items[i].title+"<br>";
                        response += resp.items[i].link +"<br><hr>";
                    }
                }
                res = {
                    response:  response,
                    next_page: resp.queries.nextPage
                }
                // res =
            }
            _start += 1;
            if (_start < 6 ) {
                doSearch(_cx, _search, _api_key, _start, _start*10+1, 

function(resp){
                        response += resp;
                    });
                }
                if (callback && typeof callback === "function") callback(response);
            });
    };

});

最佳答案

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

使用 Node.js library 的示例获得 4 页结果:

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

关于javascript - 用于 NodeJS 的 Google 自定义搜索 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599421/

相关文章:

javascript - Angular 和 ngrx : problems during upgrading to version8

javascript - 如何从 vue.js 捕获 Jquery 事件

javascript - 如何访问Google(图片)搜索引擎数据?

html - 使 Google 自定义搜索在新标签页上显示结果

javascript - 即使在外部或网页上的任何地方单击也隐藏菜单

javascript - 模态对话框不显示

mysql - 如何删除选定的行mysql express.js

node.js - Mongoose $inc updateMany 无法使用非数字参数递增

node.js - 应用程序洞察 : CorrelationIdManager error in node js