node.js模块简易使用(二)http url path crawler

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']);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值