要编写运行脚本,需要先搭建开发环境
环境搭建
nodeJs脚本运行,当然需要先安装nodejs环境
官方地址在这里: nodejs官网
打开官网地址,可以看到下面一句话:
Node.js® is an open-source, cross-platform JavaScript runtime environment.
在打开的页面,可以直接下载最新的nodejs版本;
也可以在下载页面, 来下载其他版本;
下载后直接安装即可;安装完之后就可以使用npm命令了;
多版本控制
nodejs的版本很多,实际开发中,会发现不同的项目使用的nodejs的版本不一样,所以可能需要安装多个版本;
找到了一个node多版本控制的软件nvm; 下载地址
- 下载一下 nvm-setup.zip 之后解压出来一个 nvm-setup.exe 文件,双击安装;
- 安装完成后,打开 cmd 执行命令nvm -v 测试是否成功;
- 查看可安装版本 ,执行命令:nvm list available
- 安装指定版本:nvm install 版本号; nvm install 16.14.0 =>安装nodejs 16.14.0
设置代理和镜像
如果nvm安装nodejs太慢.可以设置国内的代理地址,可以加快速度:
打开nvm安装目录,找到settings.txt文件,在最后添加一下参数
node_mirror:https://npm.taobao.org/mirrors/node/
npm_mirror:https://npm.taobao.org/mirrors/npm/
npm下载依赖包,默认的地址是国外的地址,有可能也会慢,可以设置一下镜像;
打开CMD,输入如下命令即可:
npm config get registry
npm config set registry https://registry.npm.taobao.org/
编写脚本
工具推荐使用vscode,比较方便;
- 实现一个打开指定网页的脚本
var open = require('open'); //opn child_process都可以
open('https://***.cn/', 'chrome');
以上两行代码,就可以实现;
不过,第一行代码中的require中的open是需要安装的;
在vscode中打开新终端,输入命令:
npm install open
也可以打开CMD,输入以上命令,都可以安装依赖;
运行脚本
在vscode中的新终端,输入命令:
node 脚本名称
或者打开CMD,进入脚本所在目录,输入以上命令;
就可以运行以上脚本;
编写NodeJs脚本实现接口请求
- 写一个脚本请求指定url获取html并解析:
主要用到的库是https和cheerio;
代码语言:javascript复制http是发起请求使用,是内置插件;
cheerio是一个第三方插件,该插件可以将网页中的数据拿出来,像jquery一样操作dom,
安装命令: npm install cheerio
const https = require('http'); //请求发起
//解析html 一个服务端操作DOM的库,简直就是服务端的jquery。
const cheerio = require('cheerio');
const gethtml = function(){
let url = 'https://www.baidu.com/';
https.get(url,function(res){
// 分段返回的 自己拼接
let html = '';
// 有数据产生的时候 拼接
res.on('data',function(chunk){
html = chunk;
})
// 拼接完成
res.on('end',function(){
//解析html
//console.log(html)
const $ = cheerio.load(html);
console.log($('.s-top-left').text())
})
})
}
gethtml()
- 写一个脚本请求指定接口,获取json数据;
const http = require('http');//由于http.get是Node的http模块 所以第一件事情当然是引入http模块啦~
http.get('http://httpbin.org/get', (res) => {//res是请求后端给你的数据
const { statusCode } = res;//获取请求的状态码
const contentType = res.headers['content-type'];//获取请求类型
let error;
if (statusCode !== 200) {//如果请求不成功
error = new Error('请求失败n'
`状态码: ${statusCode}`); //报错抛出状态码
} else if (!/^application/json/.test(contentType)) {//验证请求数据类型是否为json数据类型 json的content-type :'content-type':'application/json'
error = new Error('无效的 content-type.n' //再次报错
`期望的是 application/json 但接收到的是 ${contentType}`);
}
//请求成功
res.setEncoding('utf8');//字符编码
let rawData = '';
res.on('data', (chunk) => { rawData = chunk; });//通过data事件拼接数据流得到数据
res.on('end', () => {//end表示获取数据结束了
try { //捕获错误信息
console.log(rawData);
} catch (e) {
console.error(e.message);
}
});
}).on('error', (e) => {
console.error(`出现错误: ${e.message}`);
});