http url path 三个模块
导入模块
const http = require("http");
创建http服务
const server = http.createServer((request, response) => {
console.log(1111);
// console.log(request);
// 请求路径
console.log(request.url);
// 请求方式
console.log(request.method);
// 1. 设置响应头 服务器为了告诉浏览器 我返回给你的数据 你用utf-8来解析
response.setHeader("content-type", "text/html;charset=utf-8")
// response.end("how are you?")
response.end("刚好遇见你")
// 开启服务器
server.listen("80", "127.0.0.1", () => {
console.log("start");
})
})
注意:
地址可以省略 但是端口号不行 地址不填 默认是127.0.0.1
server.listen("8080", () => {
console.log("start");
}
node路径问题
nodejs里面的相对路径 是相对于当前运行node命令的终端所处相对路径
为了保证在任何地方打开终端 都可以运行 那么我们的路径使用绝对路径
解决办法 : __dirname
__dirname 是当前文件所在的文件的绝对路径
__filename 是当前文件的绝对路径
nodejs路径模块
// 导入模块
const path = require("path");
const fs = require("fs");
const pathName = path.join("name", "info", "assets", "index.html");
console.log(pathName);
// 在使用到路径的地方 使用绝对路径
const txtPath = path.join(__dirname, "novels", "01.txt");
console.log(txtPath);
// 读取文件
fs.readFile(txtPath, "utf-8", (err, data) => {
if(!err) {
console.log(data);
} else {
console.log(err);
}
})
模拟web服务器
// 导入模块
const http = require("http");
const fs = require("fs");
const path = require("path");
// 创建服务器对象
const server = http.createServer((request, response) => {
const reqUrl = request.url;
// 读取index.html页面的额内容
fs.readFile(path.join(__dirname, "www", reqUrl), (err, data) => {
if(!err) {
response.end(data);
} else {
response.end(
`<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL ${reqUrl} was not found on this server.</p>
</body></html>`)
}
})
})
处理get和Post请求
// 导入http模块
const http = require("http");
const url = require("url");
const querystring = require("querystring")
// 创建服务器对象
const server = http.createServer((request, response) => {
console.log(request.method);
response.end(request.method);
console.log(request.url);
const reqMed = request.method;
if(reqMed === "GET") {
console.log(request.url);
const reqUrl = request.url;
// 引入url模块 调用parse来解析url
console.log(url.parse(reqUrl, true));
const getdata = url.parse(reqUrl, true).query;
console.log(getdata);
console.log(getdata.name);
console.log(getdata.skill);
} else if(reqMed === "POST") {
var postStr = "";
request.on("data", (data) => {
postStr += data;
})
// end事件表示数据传输完毕
// end事件 没有参数
request.on("end", () => {
// post请求传递的数据不是url 只是单纯的key=value&key1=value1这种类型的字符
// 我们可以直接使用querystring.parse来解析
const postData = querystring.parse(postStr);
console.log(postData);
})
}
})
// 开启服务器
server.listen("8848", () => {
console.log("start");
})
爬虫 crawler
2.
3.
步骤 :
1.导入fs模块(文件)
var fs = require("fs");
2.创建爬虫对象
var c = new Crawler({
// 最大的连接数
maxConnections : 10,
// This will be called for each crawled page
// 爬完一个数据 会触发的事件
callback : function (error, res, done) {
if(error){
console.log(error);
}else{
var $ = res.$;
console.log($("title").text());
}
done();
}
});
爬取的网址 可以是单个, 也可以是多个
// Queue just one URL, with default callback
c.queue('http://www.amazon.com');
// Queue a list of URLs
c.queue(['http://www.google.com/','http://www.yahoo.com']);