Node.js HTTP(S) module ----- Making a Request 发送请求 获取数据 (爬虫起点)

Making a Request

Table of Contents

Making a Request

概括:

应用:

Advanced 提高:

知识结合


在HTTP中 有俩个module 涉及到, 一个是 HTTP 另外 一个是 HTTPs

你现在就可以在你的浏览器域名中 看到这个部分

现在大多数主流网站的module都是使用的HTTPs 因为它更附有安全性

概括:

目前,我们的Web应用程序往往与其他服务进行大量集成,无论是与Twitter等REST服务交互,还是从Flickr下载图像。使用Node / JavaScript是处理这类应用程序的最流行的语言之一。无论哪种方式,您都会发出大量的HTTP请求,这意味着您需要一个可靠的模块来使编写代码更加广泛运用

应用:

const request = require('request');

request('https://www.csdn.net', function(err, res, body) {  
    console.log(body);
});

上面这段代码,会返编写 csdn.net的内容

包括HTML, JSON  等等

第一个argument在request中 可以被替换成很多不同的量, 有 <URL / Object/ String>

Advanced 提高:

因此 我们会列出一个options 去包含我们所要请求的选项, 包括

  • url: 网站
  • method: HTTPS 的方程(GET, POST, DELETE, etc)
  • headers: 一个http 的 object 被设置在 区域中
const https = require('https');

const options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET'
};

然后我们便可以查看这个 网站中的信息

如下:

const req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

  res.on('data', (d) => {
    process.stdout.write(d);
  });

  res.on('close', (d) => {
    process.stdout.write('Done!');
  });
});

req.on('error', (e) => {
  console.error(e);
});
req.end();

在这 有三个event listener 

  • function(res) 会产生当连接开始
  • on('data') 当这里有chunk of data 的时候(filesystem 提到过)
  • on('close')被called 当连接终止.  on('end') 也有相同的结果

知识结合

如果结合filesystem的知识

把所有手机的data chunk 组合在一起

然后导入一个 file

例如:

var https = require("https");
var fs = require("fs");

var options = {
	hostname: "en.wikipedia.org",
	port: 443,
	path: "/wiki/a",
	method: "GET"
};

var req = https.request(options, function(res) {

	var responseBody = "";

	console.log("Response from server started.");
	console.log(`Server Status: ${res.statusCode} `);
	console.log("Response Headers: %j", res.headers);

	res.setEncoding("UTF-8");

	res.once("data", function(chunk) {
		console.log(chunk);
	});

	res.on("data", function(chunk) {
		console.log(`--chunk-- ${chunk.length}`);
		responseBody += chunk;
	});

	res.on("end", function() {
		fs.writeFile("Charactera.html", responseBody, function(err) {
			if (err) {
				throw err;
			}
			console.log("File Downloaded");
		});
	});

});

req.on("error", function(err) {
	console.log(`problem with request: ${err.message}`);
});

req.end();

我们把 wikipedia 的 一张直接copy进入了 a.txt 文件中

然后运行这个file在浏览器中

除了图片 其他内容 都会一一呈现出来.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值