Node.js无法向zomato.com发出请求

时间:2017-02-09 19:37:35

标签: javascript node.js npm http-get

我想向https://zomato.com/发出请求,但没有回复,我能够连接到其他地方,但不能连接到zomato我每次都会收到超时错误。我试图设置用户代理但它没有用。我使用节点6.6.0并请求2.79.0。有什么想法吗?

var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
var http = require('http');

request.get({
    url: 'http://zomato.com/',
    headers: {
        'user-ggent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'
      }
}, function(error, response, body) {
    if(error) {
        console.log("Error: " + error);
        return;
    }
    else {
        console.log("Status code: " + response.statusCode);
  }
});


<小时/> 更新
我注意到了这一点:

curl -X GET "https://zomato.com/"

返回301重定向

2 个答案:

答案 0 :(得分:1)

我尝试与某些网站做类似的事情时遇到了一些问题。请尝试使用NigthmareJS代替请求

我没有测试zomato但是这里有我用于其他网站的代码:

var website = new Nightmare()
.useragent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36")
.goto('http://zomatoorwhateverwebsite.com/')
.evaluate(function(){
    return document.documentElement.innerHTML;
})
.end()
.then(function(html) {
   var $ = cheerio.load(html);

   //Do what you need here
})

我希望这会有所帮助。有时您需要添加一些wait()检查文档以获取额外的功能

答案 1 :(得分:-1)

如果你查看curl zomato.com的输出-v你可以看到我们被重定向:

HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently 

所以我们需要添加:

 followAllRedirects: true,

这里:

 request.get({

     url: 'http://zamato.com/',
     followAllRedirects: true,
     headers: {
           'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'
      }