Node.js学习(三)常用模块与网络爬虫

article/2025/8/21 7:23:40

学习视频
Node.js学习(一)介绍
Node.js学习(二)异步、缓存区、文件系统

path模块

nodejs中,提供了一个path模块,在这个模块中,提供了许多实用的、可被用来处理与转换文件路径的方法和属性

  1. 什么是path模块?
    path模块是node.js中提供的一个系统模块,用来格式化或拼接一个完整的路径
  2. 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模块(重点)

  1. 什么是URL
    url:全球统一资源定位符,对网站资源的一种简洁表达形式,也称为网址
  2. URL的构成
    //完整结构
    协议://用户名:密码@主机名.名.域:端口号/目录名/文件名.扩展名?参数名=参数值&参数名2=参数值2#hash
    //http协议的URL常见结构
    协议://主机名.名.域:端口号/目录名/文件名.扩展名?参数名=参数值&参数名2=参数值2#hash
    url构成
  3. 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协议(重点)

  1. 什么是网络?
    网络是一个供相关、传输信息的虚拟平台
  2. 什么是网络协议?
    每天有大料的数据在网络上传输,都需要遵循相应的规则,规则就是网络协议
  3. 什么是http协议?
    http(hypertext transfer protocol):超文本传输协议,传输超文本内容(文字、图片、视频、音频、动漫……)
    http协议规定了数据在服务器与浏览器之间传输数据的格式和过程
  4. http协议规定的细节
    http协议是一种请求应答形式的协议,一次请求,一次应答(响应)
    细节:
    定义了浏览器以什么格式向服务器发请求
    定义了服务器以什么格式解析浏览器发送过来的数据
    定义了服务器以什么格式响应数据给浏览器
    定义了浏览器以什么格式解析服务器响应的数据
  5. 软件开发模式
    1)单机软件:打开电脑就能用,不需要网络,如:Word、PS……
    2)C/S软件(客户端Client/服务器端Server):需要下载安装以后,才能连接网络使用,如:QQ
    3)B/S软件(浏览器Brower/服务器端Server):打开网址直接使用,不需要安装,如:百度
  6. 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());})
})

网络爬虫

  1. 什么是爬虫?
    网络爬虫又被称为网页蜘蛛或网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序。
  2. 写一个爬虫程序从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


http://chatgpt.dhexx.cn/article/pLr80074.shtml

相关文章

Escript氨基酸对比图怎么看_23张和田玉真假皮色对比图,看懂了再也不怕被坑

在玉石珠宝这个行业中,利益的驱使常常使很多商贩有各种各样不同的手段来造蒙骗。不管哪一个品种里有或多或少的假货掺杂。比如和田玉,假皮种类形形色色、多种多样。如果是初学者,辨别其真伪的确有一定难度,高科技下的造假皮色&…

鹅肉是凉性还是热性 鹅肉怎么做好吃

鹅肉鲜嫩味美,很多人都非常爱吃,那么你知道鹅肉是凉性还是热性吗?鹅肉怎么做好吃呢?一起了解一下。 鹅肉是凉性还是热性 中医认为,鹅肉性平、味甘,具有益气补虚、和胃止渴、止咳化痰,解铅毒、祛风湿、防衰老等作用…

红烧肉怎么做好吃 红烧肉的做法

很多人都爱吃红烧肉,入口香味浓郁简直是人间美味啊,那么红烧肉怎么做好吃呢?红烧肉的做法了解一下。 原料 猪带皮五花肉 调料 葱姜蒜、八角、桂皮、小茴香、花椒、绍酒、盐、酱豆腐汤、酱油、冰糖、干辣椒 做法: https://www.chachaba…

素饺子馅的做法大全 素饺子馅如何做

素饺子,要的就是一个“素”字,寻常百姓家,希望新的一年没有什么大起大落,平平安安,用天津话就是“素素静静过一年”。素饺子馅儿有白菜,豆腐干儿,香菜,木耳,粉条&#xf…

我用Python爬取美食网站3032个菜谱并分析,没有我不会做的菜!

这是巨变的中国,人和食物,比任何时候走的更快。近日,J哥为了寻味中国,奔走于某五线城市的大街小巷,结果除了累,啥也没寻到。 于是,J哥默默打开了各大美食网站,如豆果美食、下厨房、…

【知识图谱导论-浙大】第二章:知识图谱的表示

前文: 【知识图谱导论-浙大】第一章:知识图谱概论本节内容的视频讲解如下: 【知识图谱理论】(浙大2022知识图谱课程)第二讲-知识图谱的表示 什么是知识表示 简而言之,知识表示(Knowledge Representation, KR)就是用易于计算机处理的方式来描述人脑知识的方法。KR不是…

我用Python爬取美食网站3032个菜谱并分析,真香!

这是巨变的中国,人和食物,比任何时候走的更快。近日,J哥为了寻味中国,奔走于某五线城市的大街小巷,结果除了累,啥也没寻到。 于是,J哥默默打开了各大美食网站,如豆果美食、下厨房、…

JLink重刷固件(win7/win8/win10亲测可用)

转 [转]JLink重刷固件(win7/win8/win10亲测可用) 2017年09月12日 14:31:55 醒着的树懒 阅读数:6329 去年刚刚用上J-link的时候坏过一次,当时在网上也看了很多重刷固件的方法,但绝大多数的都是win7甚至有些需要xp&#…

洋姜的腌制方法 怎样腌制洋姜好吃

怎样腌制洋姜好吃?提到洋姜很多人都很喜欢吃,洋姜吃法很多,但是最广为人知和受欢迎的就是腌洋姜了,味道佳营养丰富。下面本文来讲解一下洋姜的腌制方法: **洋姜的腌制方法**材料:洋姜、水、花椒、丁香、桂皮、食盐 做…

香料图片加名称及其作用

良姜:别名小良姜、高良姜(中药材,本品为姜科植物Alpinia officinarum Hance)基原物料的生态:多年生草本。根茎圆柱形, 其性温、味辛;具有芳香气,有节,节处有环形膜质鳞片…

BlogEngine.net---httpHandlers与httpModules

httpHandlers是什么?httpModules又是什么?原来我都不知道,只得先搞清楚这两样,再来研究blogengine了。Two Interceptors:HttpModule and HttpHandlers 这是我在codeproject上搜到的标题,翻译过来是两个拦截器&#xff…

jquery html解码字符串,jquery如何编码和解码url?

jquery如何编码和解码url?下面本篇文章给大家介绍一下用jquery编码和解码url的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在jQuery中,我们可以使用以下方法实现URL的编码和解码:encodeURIComponent(url) :可把字符串作为 URI 组件进行编码。…

Node-JS-第三方模块.0603

1.什么是第三方模块? 写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包。 1.1 第三方模块有两种存在形式: 以js文件的形式存在,提供实现项目具体功能的API接口。 以命令行工具形式…

node.js

nodeJS 学习方法 掌握思想 ​ 编程思想很重要,语言只是工具。不仅仅只是记住了API。 查资料的方式 ​ API文档:比二阶段的API多出了3倍多。 https://blog.csdn.net/jiang7701037/article/details/95734911?ops_request_misc%257B%2522request%255Fi…

nodejs知识点总结

nodeJS 1、搭建服务器 2、mongodb 用 注册和登录增删改查新闻(bootstrap) 3、api server 注册和登录增删改查新闻(bootstrap) 4、bcrypt加密 注册和登录 5、session 登录和其它需要验证身份的模块(如:添加,删除) 6、token 登…

5.2jquery案例2

1.仿qq列表分组 <!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>好友列表</title> <style type"text/css"> body{font-family: "微…

jqueryfileupload php,JQuery fileupload插件实现文件上传功能

道理相通&#xff0c;我简单分享下在.net MVC下的实装。 1.制作Model类 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace RCRS.WebApp.LG.EM.Models { //---------------------------------------------------------------- …

为博客园添加标签云动画

canrun 优化版&#xff08;分隔线以上直接实现3D标签云效果展示&#xff09;&#xff1a; 一、在博客园管理-设置-页首Html代码中加入&#xff1a; <script type"text/javascript" src"http://files.cnblogs.com/Zjmainstay/swfobject.js"></scri…

服务器无响应无法加载,jquery - 无法加载资源:服务器响应状态为406(不可接受) - 堆栈内存溢出...

我在Chrome和Firefox浏览器控制台日志中遇到此错误 GET doaminipaddress.port / n / d85639d2ff510307eedab9f654a0d8a4.js&#xff1f;q y52W3GiXHD ... 886&#xff06;url http&#xff05;3A&#xff05;2F&#xff05;2domain.net&#xff05;2Fassets&#xff05;2Fscr…

OpenGL中如何绘制Bezier曲线和NURBS曲线

一、Bezier曲线 主要注意两个函数&#xff1a;glMap1和glEvalCoord1。 1.void glMap1{fd}(GLenum target,TYPE u1,TYPE u2,GLint stride, GLint order,const TYPE *points); 功能&#xff1a;定义求值器。  参数&#xff1a;target&#xff1a;指出了控制顶点的意义以及在po…