【发布时间】:2018-10-19 10:41:45
【问题描述】:
我尝试使用 Puppeteer (1) 在网站上废弃一个元素并在 localhost 上显示它。但是当这个元素发生变化时,我想在不使用 Puppeteer 打开新浏览器/页面的情况下刷新数据,并且仅在元素发生变化时刷新数据 (2)。
对于我的示例,我使用 www.timeanddate.com 并且元素是时间(小时和分钟)。目前,只有第一部分有效。我没有第二个的解决方案。
请在下面找到我的代码。
app.js
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var puppeteer = require('puppeteer');
app.get('/', function(req, res) {
res.render('main.ejs');
});
server.listen(8080);
let scrape = async () => {
var browser = await puppeteer.launch({headless: true});
var page = await browser.newPage();
await page.goto('https://www.timeanddate.com/worldclock/personal.html');
await page.waitFor(300);
//await page.click('#mpo > div > div > div > div.modal-body > div.form-submit-row > button.submit.round.modal-privacy__btn');
var result = await page.evaluate(() => {
return document.getElementsByClassName('c-city__hrMin')[0].innerText;
});
return result;
};
io.sockets.on('connection', function (socket) {
scrape().then((value) => { // it tooks time, a few seconds while page is loading.
console.log(value);
socket.emit('refresh', value);
});
});
main.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>What time is it?</title>
<style>
a {text-decoration: none; color: black;}
</style>
</head>
<body>
<h1>Welcome !</h1>
<div id="time">loading</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8080');
socket.on('refresh', function (value) {
$('#time').html(value);
});
</script>
</body>
</html>
我尝试了 Fiverr,但体验很糟糕。我希望这里会更好:)
谢谢你帮助我。
【问题讨论】:
-
如果答案对您有用,请选择已接受的答案,这样它就不会显示为未回答。 :)