使用 Puppeteer 将结果抓取到 JSON 时重新启动无限
Restart infinite when crawling results to JSON using Puppeteer
我使用 Puppeteer 爬取成功了。下面是一段代码,用于从商城中提取特定的产品名称。但是,我遇到了一个问题。
const express = require('express');
const puppeteer = require('puppeteer');
const fs = require('fs');
const app = express();
(async () => {
const width = 1600, height = 1040;
const option = { headless: true, slowMo: true, args: [`--window-size=${width},${height}`] };
const browser = await puppeteer.launch(option);
const page = await browser.newPage();
await page.goto('https://search.shopping.naver.com/search/all.nhn?query=%EC%96%91%EB%A7%90&cat_id=&frm=NVSHATC');
await page.waitFor(5000);
await page.waitForSelector('ul.goods_list');
await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'});
const naver = await page.evaluate(() => {
const data = {
"naver" : []
};
$('ul.goods_list > li._itemSection').each(function () {
const title = $.trim($(this).find('div.info > a.tit').text());
const price = $(this).find('div.info > .price .num').text();
const image = $(this).find('div.img_area img').attr('src');
data.naver.push({ title, price, image })
});
return data;
});
if (await write_file('example.json', JSON.stringify(naver)) === false) {
console.error('Error: Unable to write stores to example.json');
}
await browser.close();
})();
const write_file = (file, data) => new Promise((resolve, reject) => {
fs.writeFile(file, data, 'utf8', error => {
if (error) {
console.error(error);
reject(false);
} else {
resolve(true);
}
});
});
app.listen(3000, () => console.log("Express!!!"));
我将抓取数据发送到 JSON 文件 (example.json)。但我在无限重启时遇到了问题。我怎样才能让它只工作一次?
nodemon
正在重新启动您的进程,因为它检测到文件更改,即。你新写的文件。
更新 nodemon
配置以忽略 .json
文件。
我使用 Puppeteer 爬取成功了。下面是一段代码,用于从商城中提取特定的产品名称。但是,我遇到了一个问题。
const express = require('express');
const puppeteer = require('puppeteer');
const fs = require('fs');
const app = express();
(async () => {
const width = 1600, height = 1040;
const option = { headless: true, slowMo: true, args: [`--window-size=${width},${height}`] };
const browser = await puppeteer.launch(option);
const page = await browser.newPage();
await page.goto('https://search.shopping.naver.com/search/all.nhn?query=%EC%96%91%EB%A7%90&cat_id=&frm=NVSHATC');
await page.waitFor(5000);
await page.waitForSelector('ul.goods_list');
await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'});
const naver = await page.evaluate(() => {
const data = {
"naver" : []
};
$('ul.goods_list > li._itemSection').each(function () {
const title = $.trim($(this).find('div.info > a.tit').text());
const price = $(this).find('div.info > .price .num').text();
const image = $(this).find('div.img_area img').attr('src');
data.naver.push({ title, price, image })
});
return data;
});
if (await write_file('example.json', JSON.stringify(naver)) === false) {
console.error('Error: Unable to write stores to example.json');
}
await browser.close();
})();
const write_file = (file, data) => new Promise((resolve, reject) => {
fs.writeFile(file, data, 'utf8', error => {
if (error) {
console.error(error);
reject(false);
} else {
resolve(true);
}
});
});
app.listen(3000, () => console.log("Express!!!"));
我将抓取数据发送到 JSON 文件 (example.json)。但我在无限重启时遇到了问题。我怎样才能让它只工作一次?
nodemon
正在重新启动您的进程,因为它检测到文件更改,即。你新写的文件。
更新 nodemon
配置以忽略 .json
文件。