学习视频
Node.js学习(一)介绍
Node.js学习(二)异步、缓存区、文件系统
path模块
nodejs中,提供了一个path模块,在这个模块中,提供了许多实用的、可被用来处理与转换文件路径的方法和属性
- 什么是path模块?
path模块是node.js中提供的一个系统模块,用来格式化或拼接一个完整的路径 - path模块的常用方法
var path=require('path');
path.normoalize(p)//规范化路径(注意‘..’和‘.’);
path.join([path1],[path2],[...])//【重点】用于连接路径,该方法的主要用途在于,
//会正确使用当前系统的路径分隔符,Unix系统是‘/’,Windows系统是'\'
path.resolve([from...],to)//将to参数解析为绝对路径
path.isAbsolute(p)//判断参数path是否是绝对路径
path.relative(from,to)//用于将路径转为相对路径
path.dirname(p)//【重点】返回路径中代表文件夹的部分,同Unix的dirname命令类似
path.basename(p,[ext])//【重点】返回路径的最后一部分(文件名和扩展名),同Unix的dirname命令类似
path.extname(p)//【重点】返回路径中文件的后缀名,即路径中最后一个‘.’之后的部分,如果一个路径中
//并不包含‘.’或改路径只包含了一个‘.’且这个‘.’为路径的第一个字符,则此命令返回空字符串
path.parse(pathString)//【重点】解析路径:返回路径字符串的对象,包含路径中的哥哥部分
path.format(pathObject)//从对象中返回路径字符串,和path.parse相反
URL模块(重点)
- 什么是URL
url:全球统一资源定位符,对网站资源的一种简洁表达形式,也称为网址 - URL的构成
//完整结构
协议://用户名:密码@主机名.名.域:端口号/目录名/文件名.扩展名?参数名=参数值&参数名2=参数值2#hash
//http协议的URL常见结构
协议://主机名.名.域:端口号/目录名/文件名.扩展名?参数名=参数值&参数名2=参数值2#hash
- node.js的URL模块
在node.js中提供了两套对于url进行处理的API功能
1)老的node.js url模块
2)新的url模块(WHATWG URL标准模块)
var url=require('url');
var u='http://music.163.com:80/aaa/index.html?id=10#/discover';
//老的node.js的url模块
console.log(url.parse(u));
//新的url模块(符合WHATWG标准)
var obj=new url.URL(u);
console.log(obj)
/*新的es6写法
const {URL}=require('url);
const myUrl=new URL(u);
*/
DNS服务器的主要作用是将域名与ip地址进行交换,即解析域名
http协议(重点)
- 什么是网络?
网络是一个供相关、传输信息的虚拟平台 - 什么是网络协议?
每天有大料的数据在网络上传输,都需要遵循相应的规则,规则就是网络协议 - 什么是http协议?
http(hypertext transfer protocol):超文本传输协议,传输超文本内容(文字、图片、视频、音频、动漫……)
http协议规定了数据在服务器与浏览器之间传输数据的格式和过程 - http协议规定的细节
http协议是一种请求应答形式的协议,一次请求,一次应答(响应)
细节:
定义了浏览器以什么格式向服务器发请求
定义了服务器以什么格式解析浏览器发送过来的数据
定义了服务器以什么格式响应数据给浏览器
定义了浏览器以什么格式解析服务器响应的数据 - 软件开发模式
1)单机软件:打开电脑就能用,不需要网络,如:Word、PS……
2)C/S软件(客户端Client/服务器端Server):需要下载安装以后,才能连接网络使用,如:QQ
3)B/S软件(浏览器Brower/服务器端Server):打开网址直接使用,不需要安装,如:百度 - get方法
get方法用于模范客户端从服务器端获取数据
http.get('url',function(res){//res是返回对象,接收到服务器响应的所有内容
})var http=require('http');
http.get('http://www.itsource.cn',function(res){//以流的方式监听事件res.on('data',function(a){console.log(a.toString());})
})
网络爬虫
- 什么是爬虫?
网络爬虫又被称为网页蜘蛛或网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序。 - 写一个爬虫程序从nipic.com批量下载图片
url:http://www.nipic.com/photo/jianzhu/shinei/index.html
开发思路:
1)打开网页查看内容,找图片地址
2)编写代码实现打开网页,获取所有的html内容
3)通过正则表达式提取出有哪些图片地址
4)遍历图片地址数组,一个一个请求
5)将获取的图片数组保存到硬盘上
var http=require('http');
var fs=require('fs');
http.get('http://www.nipic.com/photo/jianzhu/shinei/index.html',function(res){var data='';//定义一个变量用于存放一段一段的HTML数据//以流的方式读取数据res.on('data',function(a){data+=a.toString();});//绑定end事件res.on('end',function(){//data就是当前页面的HTML内容//编写正则表达式提取所有的图片地址//小图 http://pic328.nipic.com/pic/20200923/12114369_221456547089_4.jpg//大图 http://pic328.nipic.com/file/20200923/12114369_221456547089_2.jpgvar reg=/data-src="(http:\/\/pic.*?.nipic.com.*?)"/g;var arr=[];// var result=reg.exec(data);//.exec正则表单式方法:获取匹配到的结果,只能获取一个,指针自动自下移动var result='';while(result=reg.exec(data)){arr.push(result[1]);} // fs.writeFileSync('./aa.txt',arr);//根据数组中的图片地址获取图片数据for(var i in arr){(function(i){setTimeout(() => {getImg(arr[i]);}, 1000);})(i); }})
})
//定义一个函数用于获取图片内容
function getImg(url){url=url.replace('/pic/','/file/').replace('_4','_2'); http.get(url,function(res){var fn=url.split('/')[5];//创建一个可写流var stream=fs.createWriteStream('./files/'+fn);res.pipe(stream);})
}
扩展-阿里云服务器
https://www.aliyun.com/ 注册登录后有免费服务器半年使用套餐,记住申请下来的管理员账号和密码、IP地址。
使用window的远程桌面命令,mstsc连接上远程服务器,操作服务器。如何操作:运行框输入mstsc