首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js http和必应搜索api

node.js http和必应搜索api
EN

Stack Overflow用户
提问于 2014-07-03 01:43:16
回答 3查看 1.6K关注 0票数 2

我正在尝试使用Bing搜索API返回一个JSON字符串。我首先尝试按照Azure的explore网站(https://datamarket.azure.com/dataset/explore/5BA839F1-12CE-4CCE-BF57-A49D98D29A44)使用以下url:

代码语言:javascript
复制
'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27NGI%20SPA%27&Market=%27en-US%27'

之后,我找到了一个SO线程Using the new Bing API (nodejs),它建议我使用以下形式的url:

代码语言:javascript
复制
https://user:<YourDefaultAccountKey>@api.datamarket.azure.com/Bing/SearchWeb/Web?Query=%27leo%20fender%27&Market=%27en-US%27&$top=50&$format=JSON

这两个返回状态都是401 (验证失败):

代码语言:javascript
复制
STATUS: 401
HEADERS: {"content-type":"application/json; charset=utf-8","server":"Microsoft-IIS/8.0","jsonerror":"true","x-powered-by":"ASP.NET","access-control-allow-origin":"*","access-control-allow-credentials":"false","access-control-allow-headers":"Authorization, DataServiceVersion, MaxDataServiceVersion","access-control-expose-headers":"DataServiceVersion, MaxDataServiceVersion","access-control-allow-methods":"GET, POST, OPTIONS","access-control-max-age":"604800","date":"Wed, 02 Jul 2014 17:23:29 GMT","content-length":"91"}
BODY: {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

我还尝试了其他不同的URL组合,但都没有效果。我的代码如下:

代码语言:javascript
复制
var url = require('url');
var http = require('http');

var serviceRootURL =  'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27web%27&Query=%27NGI%20SPA%27&Market=%27en-US%27'
var params = 'hi';

var dataURL = url.parse(serviceRootURL);

var post_options = {  
    hostname: dataURL.hostname,
    port: dataURL.port || 80,
    path: dataURL.path,
    method: 'GET',  
    headers: {  
        'Content-Type': 'application/json; charset=utf-8',  
        'Content-Length': params.length  
    }  
};

var req = http.request(post_options, function(res) {
    console.log('STATUS: ' + res.statusCode);
    console.log('HEADERS: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data', function (chunk) {

        console.log('BODY: ' + chunk);

    });

});

req.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});

// write data to request body
req.write('data\n');
req.write('data\n');
req.end();

你知道为什么我会得到一个身份验证失败吗?

EN

回答 3

Stack Overflow用户

发布于 2014-10-10 04:14:28

您可以使用封装请求的this module,因此可以像这样使用它:

代码语言:javascript
复制
var Bing = require('node-bing-api')({ accKey: "your-account-key" });

Bing.web("leo fender", function(error, res, body){
    console.log(body);
  },
  {
    top: 50,
    market: 'en-US'
  });

它适用于Azure版本。您只需替换您的帐户密钥。

票数 1
EN

Stack Overflow用户

发布于 2014-07-03 02:02:04

让它与request...weird一起工作

代码语言:javascript
复制
var request = require('request');
var _ = require('underscore');

var searchURL = 'https://user:<TIPE YOUR KEE HEER>@api.datamarket.azure.com/Bing/SearchWeb/v1/Web?Query=%27xbox%27&$top=10&$format=JSON';
var http = request( searchURL, function(err, resp, body)
{
    if ( err )
    {
        throw err;
    }
    var a = JSON.parse(body);
    console.log(a.d.results);
});
票数 0
EN

Stack Overflow用户

发布于 2016-04-07 00:18:31

您可以使用jsearch模块。安装;

代码语言:javascript
复制
npm install jsearch

用法;

代码语言:javascript
复制
js.bing('queryStringYouWant',10,function(response){
    console.log(response) // for Bing results 
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24537674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档