下面是一个使用 Puppeteer 和 Node.js 将网页列表数据存入数据库的示例程序:
// 导入所需的库
const puppeteer = require('puppeteer');
const mysql = require('mysql');
// 数据库连接信息
const dbConfig = {
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
};
// 创建数据库连接
const db = mysql.createPool(dbConfig);
// 定义一个函数,用于获取网页列表数据并将其存入数据库
async function scrapeAndStoreData(urlList, table) {
// 遍历网页列表
for (const url of urlList) {
try {
// 打开浏览器并导航到指定的 URL
const browser = await puppeteer.launch();
const page = await browser.newPage();
// 等待页面加载完成
await page.goto(url);
// 提取页面数据,这里假设我们要提取的是一个表格中的数据
const data = await page.evaluate(() => {
const table = document.querySelector('table');
const rows = table.querySelectorAll('tr');
// 提取表格中的数据
const result = [];
for (const row of rows) {
const cells = row.querySelectorAll('td');
const item = {
name: cells[0].textContent,
price: cells[1].textContent
};
result.push(item);
}
return result;
});
// 将提取的数据存入数据库
const query = `INSERT INTO ${table} (name, price) VALUES?`;
const values = [[data[0].name, data[0].price], [data[1].name, data[1].price]];
await db.query(query, values);
// 关闭浏览器
await browser.close();
} catch (error) {
console.error(`Error while scraping data from ${url}:`, error);
}
}
}
// 主函数
async function main() {
// 网页列表
const urlList = ['https://www.example.com/page1', 'https://www.example.com/page2', 'https://www.example.com/page3'];
// 要存储数据的表名
const table = 'yourtable';
// 调用函数并传入网页列表和表名,以获取并存储数据
await scrapeAndStoreData(urlList, table);
// 关闭数据库连接
await db.end();
}
// 运行主函数
main();
在上面的示例中,我们首先导入了所需的库,包括 Puppeteer 和 mysql。然后,我们定义了一个数据库连接配置对象 dbConfig,其中包含了数据库的主机、用户名、密码和数据库名。接下来,我们使用 mysql 创建了一个数据库连接池 db。
然后,我们定义了一个名为 scrapeAndStoreData 的函数,它接受一个网页列表 urlList 和一个表名 table 作为参数。在函数内部,我们使用 for 循环遍历网页列表中的每个 URL。对于每个 URL,我们首先使用 Puppeteer 打开浏览器并导航到该 URL,然后等待页面加载完成。接下来,我们使用 page.evaluate 方法提取页面数据,并将其存储在一个名为 data 的数组中。然后,我们将提取的数据转换为一个 SQL 查询语句,并使用 db.query 方法将其发送到数据库中进行存储。如果在某个 URL 上出现错误,我们将捕获该错误并将其记录到控制台中。最后,我们关闭浏览器。
在主函数 main 中,我们定义了一个网页列表 urlList 和一个表名 table,然后调用 scrapeAndStoreData 函数,将网页列表和表名作为参数传递给它。最后,我们关闭数据库连接。
请注意,你需要根据自己的需求修改数据库连接信息、要提取的数据和存储数据的表名。此外,Puppeteer 需要在系统上安装 Chrome 浏览器才能运行。