Javascript 如何在node.js中发出https请求
我需要做一个爬虫。对于http请求,我曾经这样做Javascript 如何在node.js中发出https请求,javascript,node.js,https,Javascript,Node.js,Https,我需要做一个爬虫。对于http请求,我曾经这样做 var http=require('http'); var options={ host:'http://www.example.com', path:'/foo/example' }; callback=function(response){ var str=''; response.on('data',function(chunk){ str+=chunk; }); response.on('end', fun
var http=require('http');
var options={
host:'http://www.example.com',
path:'/foo/example'
};
callback=function(response){
var str='';
response.on('data',function(chunk){
str+=chunk;
});
response.on('end', function () {
console.log(str);
});
}
http.request(options, callback).end();
但我必须为你做一个爬虫
如果我使用相同的方法,则会产生此错误
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
我推荐这个优秀的HTTP请求模块: 您可以通过以下方式安装它: npm安装-g unirest 下面是一些使用Unirest的节点代码示例:
var url = 'https://somewhere.com/';
unirest.get(url)
.end(function(response) {
var body = response.body;
// TODO: parse the body
done();
});
…因此,要在www.purple.com上获取HTML,请执行以下操作:
#!/usr/bin/env node
function getHTML(url, next) {
var unirest = require('unirest');
unirest.get(url)
.end(function(response) {
var body = response.body;
if (next) next(body);
});
}
getHTML('http://purple.com/', function(html) {
console.log(html);
});
您检查了吗?我得到的数据(元素及其属性)与inspect元素中可见的数据不同。这是完全不同的,或者可以说encoded.unirest.get(url)将在url处获取文本数据。当你检查页面时,你看到的是JavaScript运行过的页面——因此你没有看到原始HTML——你看到的是JavaScript mods之后的DOM。那么你能告诉我们如何查看原始HTML吗。谢谢