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())})




相关文章
|
2天前
|
Web App开发 JavaScript 前端开发
Node.js是什么(基础篇)
Node.js是什么(基础篇)
7 2
|
9天前
|
JavaScript 网络协议
Node.js 工具模块
Node.js 工具模块
12 0
|
1月前
|
JavaScript API
node.js之模块系统
node.js之模块系统
|
1月前
|
JavaScript 中间件 测试技术
|
9月前
|
JavaScript 前端开发 索引
node - cheerio模块
node - cheerio模块
|
9月前
|
存储 监控 Kubernetes
Node.js 监控
Node.js 监控
73 0
|
11月前
|
JavaScript 前端开发 网络协议
Node.js 基本架构解析
Node.js 基本架构解析
239 0
|
Web App开发 JavaScript 前端开发
Node.js的基础学习
Node.js的基础学习
109 1
|
JSON JavaScript 前端开发
Node.js学习笔记(六) express模块
Node.js学习笔记(六) express模块
100 0
|
JavaScript 前端开发
node-14-ejs-基础
高效的嵌入式 JavaScript 模板引擎。 EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。EJS 没有如何组织内容的教条;也没有再造一套迭代和控制流语法;有的只是普通的 JavaScript 代码而已。
113 0
node-14-ejs-基础