NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)

简介:

目的:

  数据采集

  写入本地文件备份

  构建web服务器

  将文件读取到网页中进行展示

目录结构:

package.json文件中的内容与上一篇一样:NodeJs+Request+Cheerio 采集数据

request :https://github.com/request/request 使得请求变得更容易,简单

cheerio:https://github.com/cheeriojs/cheerio 用来解析dom结构,类似jQuery,挺好用

app.js文件:

复制代码
/**
 * 数据采集
 * 写入本地文件备份
 * 创建web服务器
 * 将文件读取到网页中进行展示
 */
//引入需要的包
var http = require('http');
//var path = require('path');
var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');

//定义常量
var dolphin = 'http://cn.dolphin.com/blog';
const filePath = '/NodeJsTest/test_7/sampleCollection/localFiles/opts.txt';

//数据请求
function dataRequest(dataUrl) {
    //发送请求
    request({
        url : dataUrl,
        method : 'GET'
    },function(err, red, body) {
        //请求到body
        if(err){
            console.log(dataUrl);
            console.error('[ERROR]Collection' + err);        
            return;
        }

        if(dataUrl && dataUrl === dolphin){
            dataPraseDolphin(body);
        }
    })
}

/**
 * 解析html
 */
function dataPraseDolphin(body) {
    
    var $ = cheerio.load(body);

    var atricles = $('#content').children('.status-publish');

    for(var i = 0;i < atricles.length;i++){
        var article = atricles[i];

        var $a = $(article).find('.post-title .entry-title a');
        var $p = $(article).find('.post-content p');

        var $aVal = $($a).text();
        var $pVal = $($p).text();

        var localData;

        if($p){
            localData = '--------------'+ (i+1) +' Chapter------------------' + '\n'
                      + '标题:' + $aVal + '\n'
                      + '简介:' + $pVal + '\n'
                      + '时间:' + new  Date + '\n'
                      + '---------------------------------------------------' + '\n';
            console.log(localData);
            writeToLocal(localData,i);
        }


    }
}

/**
 * [writeToLocal description]
 * 将解析的数据 写入本地文件进行备份
 */
function writeToLocal(dataPage,fj){
    console.log('-------------准备写入文件------------------------')
    //同步写入文件,一般使用异步好
    fs.appendFileSync(filePath, dataPage);
}

/**
 * 创建web服务器
 * @return {[type]} [description]
 */
function createServer(){
    http.createServer(function(req,resp){

        console.log('服务启动!')
        wirteToPage(resp);
        
    }).listen(7000);
}

/**
 * 将抓取的数据写入页面
 */
function wirteToPage(resp){
    fs.readFile(filePath,function(err,data){
        if(err){
            console.log(err);
            resp.writeHead(404,{
                'Content-Type':'text/html'
            })
        }else{
            resp.writeHead(200,{
                //响应头添加编码格式解决乱码问题
                'Content-Type': 'text/plain;charset=utf-8'
            });
            //resp.write('<head><meta charset="utf-8"/></head>');      
            resp.write(data.toString());
        }
        resp.end();
    })
}

//开始发送请求 并 采集数据
dataRequest(dolphin);
createServer();
复制代码

Sublime 中 ctrl+B 执行 

浏览器地址栏请求:http://localhost:7000

 结果

 

转载:http://www.cnblogs.com/zqzjs/p/5487381.html

目录
相关文章
|
25天前
|
搜索推荐 安全 网络安全
服务器支持HTTPS的时机和条件
【10月更文挑战第23天】服务器支持HTTPS的时机和条件
18 5
|
28天前
|
JavaScript API 开发工具
(H5-Web3D-ThreeJS)在网页三维CAD中绘制窗户模型
本文介绍了如何使用mxcad3d在网页中创建一个简单的三维窗户模型。通过官方教程搭建环境,编写绘制窗户模型的代码,并在点击按钮后展示模型效果。最终模型包括窗框和玻璃部分,具备丰富的三维建模功能和便捷的API支持。
|
1月前
使用Netty实现文件传输的HTTP服务器和客户端
本文通过详细的代码示例,展示了如何使用Netty框架实现一个文件传输的HTTP服务器和客户端,包括服务端的文件处理和客户端的文件请求与接收。
44 1
使用Netty实现文件传输的HTTP服务器和客户端
|
1月前
|
Web App开发 前端开发 网络性能优化
Web网页端IM产品RainbowChat-Web的v7.2版已发布
RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIMSDK (Github地址) 的产品级移动端IM系统)。
36 1
|
2月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
19天前
|
存储 Oracle 关系型数据库
oracle服务器存储过程中调用http
通过配置权限、创建和调用存储过程,您可以在Oracle数据库中使用UTL_HTTP包发起HTTP请求。这使得Oracle存储过程可以与外部HTTP服务进行交互,从而实现更复杂的数据处理和集成。在实际应用中,根据具体需求调整请求类型和错误处理逻辑,以确保系统的稳定性和可靠性。
24 0
|
1月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
45 3
|
2月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
144 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
2月前
|
SQL 安全 搜索推荐
Web安全-伪静态网页
Web安全-伪静态网页
38 3
|
2月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
32 1

热门文章

最新文章