深入浅出Node核心模块API-url

一、URL模块深入浅出Node核心模块API-url1、url.parse()
作用:将一个url链接解析成对象
第一个参数是url
第二个参数如果为true,代表可以对query进行二次解析。
第三个参数如果为true,会对没有请求协议的url进行进一步的解析。url.parse(“https://www.baidu.com:8080/api.php?from=qianfeng&course=node#level1”)深入浅出Node核心模块API-url
深入浅出Node核心模块API-url
2、url.format()
作用:将一个url对象拼接成对应的整体URL链接。

url.format(urlObject)
3、url.resolve()

url.resolve(from, to)
深入浅出Node核心模块API-url
二、Query String-查询字符串
【注】querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串。 可以通过设置第二、三个参数修改拼接符。

querystring.stringify({name: “qianfeng”, course: [“nodejs”, “vue.js”], from: “”}, “,”, “:”);深入浅出Node核心模块API-url
深入浅出Node核心模块API-url
深入浅出Node核心模块API-url
三、HTTP模块
HTTP模块
HTTP小爬虫
Request方法

HTTP、HTTPS模块
//创建spider.js编写网络爬虫案例
//1、引入模块
var http = require(“http”);
//【注】http模块没有办法请求https模块
var https = require(“https”);

//2、https://www.lagou.com/ 爬取拉勾网菜单页
var url = “https://www.lagou.com/”;

//3、通过模块去请求这个链接,在回调函数中接受数据
https.get(url, function(res){
var html = “”;
//4、启动data事件,如果数据更新,就触发事件拼接字符串
res.on(“data”, function(data){
html += data;
})

//5、当数据请求结束,输出数据
res.on("end", function(){
	// console.log(html);

	//调用方法进行解析
	var result = filterMenu(html);

	//调用方法输出
	printMenu(result);
})
//6、捕获错误
res.on("error", function(err){
	console.log(err);
})

})

//7、
/*
【注】在这里要进一步抓取数据,需要引入一个模块
这个模块在本地没有,所以我们需要下载一下。
npm install cheerio -D
*/
var cheerio = require(“cheerio”);

//编写过滤数据的函数
function filterMenu(html){
//<1>加载下载到的数据
var $ = cheerio.load(html);
//<2>类似于JQ的使用方式,将需要的节点获取到。
var menu = $(".menu_main");
//<3>解析
var menuData = [];
menu.each(function(index, item){
//一级标题
var menuTitle = $(item).find(“h2”).text();
var menuLists = KaTeX parse error: Expected '}', got 'EOF' at end of input: … menuList.push((item).text());
})
menuData.push({
menuTitle: menuTitle,
menuList: menuList
})
})
return menuData;
}

//定义一个输出的函数
function printMenu(menu){
menu.forEach(function(item){
console.log(item.menuTitle + “\n”);
item.menuList.forEach(function(item){
console.log(item);
})
})
}

终端需要运行的命令
【注】实现http模块和https模块大致相同。

npm install cheerio -D
node spider.js