我想向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重定向
答案 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'
}