Puppeteer - 更新抓取网站的内容
Puppeteer - update content of a scraped website
我想使用 nodejs 创建一个 cli 脚本来抓取不提供 api 的体育结果网站的内容。我知道如何管理scraping的内容,但我有疑问。如果结果发生变化并在 table 内显示到终端 window??
中,是否可以更新抓取的内容
这是一个简化的例子。脚本打开 https://time.is/ and logs the time to the console on each change of the site clock element. It uses page.exposeFunction()
and MutationObserver
.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const [page] = await browser.pages();
await page.goto('https://time.is/');
await page.exposeFunction('updateTime', updateTime);
await page.evaluate(() => {
const clock = document.querySelector('#clock0_bg');
const config = { subtree: true, childList: true, attributes: true, characterData: true };
const callback = function () { window.updateTime(clock.innerText); };
const observer = new MutationObserver(callback);
observer.observe(clock, config);
});
} catch (err) { console.error(err); }
function updateTime(time) {
console.log(time);
}
我想使用 nodejs 创建一个 cli 脚本来抓取不提供 api 的体育结果网站的内容。我知道如何管理scraping的内容,但我有疑问。如果结果发生变化并在 table 内显示到终端 window??
中,是否可以更新抓取的内容这是一个简化的例子。脚本打开 https://time.is/ and logs the time to the console on each change of the site clock element. It uses page.exposeFunction()
and MutationObserver
.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const [page] = await browser.pages();
await page.goto('https://time.is/');
await page.exposeFunction('updateTime', updateTime);
await page.evaluate(() => {
const clock = document.querySelector('#clock0_bg');
const config = { subtree: true, childList: true, attributes: true, characterData: true };
const callback = function () { window.updateTime(clock.innerText); };
const observer = new MutationObserver(callback);
observer.observe(clock, config);
});
} catch (err) { console.error(err); }
function updateTime(time) {
console.log(time);
}