如何用puppeteer获取网页列表数据并存入数据库

本文介绍了一个使用Puppeteer和Node.js编写的脚本,它从多个网页抓取数据,如表格内容,然后将这些数据插入到MySQL数据库中,以展示如何结合这两种技术进行数据处理和存储。
摘要由CSDN通过智能技术生成

下面是一个使用 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 浏览器才能运行。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值