如何检索nodejs刮取的数据并在html中显示
我正在尝试使用NodeJs从一个网站中获取一些内容,这一切都很好,但是刮取的文本仅在控制台中显示。然而,我想将刮取的数据传递到我的html页面(index.html),但不知道如何做 这是我的nodejs文件(scrape.js) 这是我的html文件,数据应该在其中显示(index.html)如何检索nodejs刮取的数据并在html中显示,html,node.js,angularjs,web-scraping,Html,Node.js,Angularjs,Web Scraping,我正在尝试使用NodeJs从一个网站中获取一些内容,这一切都很好,但是刮取的文本仅在控制台中显示。然而,我想将刮取的数据传递到我的html页面(index.html),但不知道如何做 这是我的nodejs文件(scrape.js) 这是我的html文件,数据应该在其中显示(index.html) 实时数据 实时数据 实时数据 标题 数据。。。 技术支持 实时数据 我的请求非常简单,我想在(index.html)中的nodejs(scrape.js)中显示刮取的数据您应该能够为此使用EJS(或
实时数据
实时数据
实时数据
标题
数据。。。
技术支持
实时数据
我的请求非常简单,我想在(index.html)中的nodejs(scrape.js)中显示刮取的数据您应该能够为此使用EJS(或者任何其他模板引擎) 我们将标题下载到一个数组中,然后使用ejs.render进行渲染 请确保使用安装ejs
npm install ejs
在项目中,您需要创建以下结构:
- /index.js
- /视图/index.ejs
const request = require('request');
const cheerio = require('cheerio');
const express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
request('https://store.steampowered.com/search/?filter=weeklongdeals', (error, response, html) => {
if(!error && response.statusCode == 200) {
const $ = cheerio.load(html);
let titles = [];
$('.title').each((i,ele) => {
const title = $(ele).text();
console.log(title);
titles.push(title);
});
res.render('index', { titles });
}
})
});
app.listen(8080);
console.log('Express listening on port 8080');
<!DOCTYPE html>
<html>
<title>Real Time Data</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<body style="padding: 2em">
<table class="table table-striped table-bordered">
<tr>
<th>Title</th>
</tr>
<% for (let title of titles) { %>
<tr>
<td><%= title %></td>
</tr>
<% } %>
</table>
</body>
</html>
index.ejs
const request = require('request');
const cheerio = require('cheerio');
const express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
request('https://store.steampowered.com/search/?filter=weeklongdeals', (error, response, html) => {
if(!error && response.statusCode == 200) {
const $ = cheerio.load(html);
let titles = [];
$('.title').each((i,ele) => {
const title = $(ele).text();
console.log(title);
titles.push(title);
});
res.render('index', { titles });
}
})
});
app.listen(8080);
console.log('Express listening on port 8080');
<!DOCTYPE html>
<html>
<title>Real Time Data</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<body style="padding: 2em">
<table class="table table-striped table-bordered">
<tr>
<th>Title</th>
</tr>
<% for (let title of titles) { %>
<tr>
<td><%= title %></td>
</tr>
<% } %>
</table>
</body>
</html>
实时数据
标题
然后导航到localhost:8080/以查看呈现的页面
我已经创建了一个在线示例您应该能够为此使用EJS(或者任何其他模板引擎) 我们将标题下载到一个数组中,然后使用ejs.render进行渲染 请确保使用安装ejs
npm install ejs
在项目中,您需要创建以下结构:
- /index.js
- /视图/index.ejs
const request = require('request');
const cheerio = require('cheerio');
const express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
request('https://store.steampowered.com/search/?filter=weeklongdeals', (error, response, html) => {
if(!error && response.statusCode == 200) {
const $ = cheerio.load(html);
let titles = [];
$('.title').each((i,ele) => {
const title = $(ele).text();
console.log(title);
titles.push(title);
});
res.render('index', { titles });
}
})
});
app.listen(8080);
console.log('Express listening on port 8080');
<!DOCTYPE html>
<html>
<title>Real Time Data</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<body style="padding: 2em">
<table class="table table-striped table-bordered">
<tr>
<th>Title</th>
</tr>
<% for (let title of titles) { %>
<tr>
<td><%= title %></td>
</tr>
<% } %>
</table>
</body>
</html>
index.ejs
const request = require('request');
const cheerio = require('cheerio');
const express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
request('https://store.steampowered.com/search/?filter=weeklongdeals', (error, response, html) => {
if(!error && response.statusCode == 200) {
const $ = cheerio.load(html);
let titles = [];
$('.title').each((i,ele) => {
const title = $(ele).text();
console.log(title);
titles.push(title);
});
res.render('index', { titles });
}
})
});
app.listen(8080);
console.log('Express listening on port 8080');
<!DOCTYPE html>
<html>
<title>Real Time Data</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<body style="padding: 2em">
<table class="table table-striped table-bordered">
<tr>
<th>Title</th>
</tr>
<% for (let title of titles) { %>
<tr>
<td><%= title %></td>
</tr>
<% } %>
</table>
</body>
</html>
实时数据
标题
然后导航到localhost:8080/以查看呈现的页面
我创建了一个在线示例是@Terry说的,但是使用get和map,而不是在每个循环中推送元素:
let titles = $('.title').get().map(e => $(e).text())
@Terry说了什么,但使用get和map而不是在每个循环中推送元素:
let titles = $('.title').get().map(e => $(e).text())
你好!有多种方法可以实现您想要的结果,但是,我建议您使用模板引擎。你可以退房。模板引擎可以帮助您管理如何将数据传递和转换为标记。仅供参考,它是被刮(刮、刮、刮)的,而不是被刮!有多种方法可以实现您想要的结果,但是,我建议您使用模板引擎。你可以退房。模板引擎可以帮助您管理如何传递数据并将其转换为标记。仅供参考,它已被刮除(刮除、刮除、刮除)而不是刮除Hanks bro,它现在工作正常,我想问一件事,我如何访问数组标题并获取索引元素?例如(title[0])您可以使用titles[0]来访问.ejs页面中的数组元素。我用的是一个。。但是你也可以用一个普通的for循环。使用hi-bro代替hi-bro,我尝试了你的示例,得到了正确的索引元素,但问题是当我使用标题[0]时,它是一个重复的数据,例如(锈迹,锈迹,锈迹)。你认为问题出在哪里?哦,嘿,你需要循环一下标题,比如感谢兄弟,现在它工作得很好,我想问一件事,我如何访问数组标题并获取索引元素?例如(title[0])您可以使用titles[0]来访问.ejs页面中的数组元素。我用的是一个。。但是你也可以用一个普通的for循环。使用hi-bro代替hi-bro,我尝试了你的示例,得到了正确的索引元素,但问题是当我使用标题[0]时,它是一个重复的数据,例如(锈迹,锈迹,锈迹)。你认为问题出在哪里?哦,嘿,你需要像这样循环标题