node-16-ejs-综合-cheerio

简介: 先熟悉下流程把之前爬取的数据展示出来

1.前言


先熟悉下流程把之前爬取的数据展示出来


2.服务端


注释不多了,看不懂的可自行回顾下


const express = require('express')
const fs = require('fs')
var app = express()
app.use(express.static(__dirname + '/public'))
// 模板目录
app.set("views", __dirname + "/view")
// 模板引擎
app.set("view engine", "ejs")
app.get('/', function (req, res) {
//test.json之前爬虫的数据
    fs.readFile(__dirname + "/test.json", function (err, data) {
        if (err) {
            console.log("读取错误:", err);
        } else {
            console.log("数据:", data.toString());
            res.render("index", { list: JSON.parse(data.toString()) })
        }
    })
})
app.listen(6789, function () {
    console.log("6789 服务已启动");
})



3.ejs模板


后缀尽量是ejs,写的多了就习惯了

vscode可以装ejs的插件

后缀格式不妨碍 文件内容是 html

好的习惯 :如需换行 就把 <%  %>补全 , 省的报错 ,把自己搞懵逼了

view/index.ejs

完整 ejs模板


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>中华有为</title>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
    <ul>
        <% list.forEach(function(item){  %>
            <li>
                <img src="<%= item.imgSrc  %>" alt="">
                <h2> <%= item.title%></h2>
                <p><%= item.desc%></p>
            </li>
        <% }) %>
    </ul>
</body>
</html>



4.样式


注意哦 这里引用的css文件路径

这个css文件是在服务器端指定的静态资源目录里面的 public/css/index.css

根据自己的结构 样式自己玩


<link rel="stylesheet" href="css/index.css">



5. 完整的服务器代码


包含爬取数据的代码

爬取的网站自己找 某东 某宝 某为 某米 等等 都可以自己玩


const express = require("express")
const request = require("request")
const cheerio = require("cheerio")
var app = express()
app.use(express.static(__dirname+"/public"))
const fs = require("fs")
// 模板目录
app.set("views",__dirname+"/view")
//模板引擎
app.set("view engine","ejs")
request({
    url:"https://XXXX"
},(err,res,body) => {
    if(err){
        return console.log("爬取网页失败:",err);
    }
   var $ = cheerio.load(body)
   var arr = [];
   $(".grid-list li").each(function(){
       arr.push({
           title: $(this).find(".title").html(),
           imgSrc: $(this).find("img").attr("src"),
           desc: $(this).find(".desc").attr("title")
       })
   }) 
   fs.writeFile(__dirname+"/test2.json",JSON.stringify(arr),(err)=>{
      if(err){
          return console.log("写入失败:",err)
      }
      console.log("写入数据成功");
   })
})
app.get("/",(req,res)=>{
     fs.readFile(__dirname+"/test2.json",(err,data)=>{
         if(err){
             return console.log("读取数据失败:",err);
         }
         res.render("index",{list:JSON.parse(data.toString())})
     })
})
app.listen(6767,()=>{
    console.log("6767服务启动");
})
注意 render数据


res.render("index",{list:JSON.parse(data.toString())})




相关文章
|
10天前
|
JSON 缓存 负载均衡
Node.js 的性能
Node.js 的性能
34 12
|
2月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
43 2
|
4月前
|
存储 缓存 JSON
Node.js有哪些模块系统
【8月更文挑战第12天】Node.js有哪些模块系统
49 3
|
5月前
|
Web App开发 存储 JavaScript
前端如何学习Node.js及Node.js的主要用途
【7月更文挑战第16天】 学习Node.js对前端开发者至关重要,涉及理解其基于V8的运行时环境、JavaScript基础、安装与验证、核心模块(如fs、http、path)及npm管理。实践项目,如用Express建服务器,参与开源,深入学习异步编程和事件循环。Node.js用于服务器开发、构建工具、本地开发服务器和实时应用,提升全栈能力。借助官方文档和各种资源加速学习。
78 4
|
6月前
|
Web App开发 JavaScript 前端开发
Node.js是什么(基础篇)
Node.js是什么(基础篇)
32 2
|
7月前
|
JavaScript API
node.js之模块系统
node.js之模块系统
|
JavaScript 前端开发 索引
node - cheerio模块
node - cheerio模块
|
JavaScript 前端开发 网络协议
Node.js 基本架构解析
Node.js 基本架构解析
317 0
|
Web App开发 JavaScript 前端开发
Node.js的基础学习
Node.js的基础学习
127 1
|
JavaScript 网络协议 Windows
Node.js入门之path模块
前面我们介绍了什么是Node.js,今天我们主要再来说说path模块。path模块主要是对系统中路径的一些操作。比如常用的获取文件路径、文件名、文件扩展名等。
228 0