JavaScript爬虫进阶攻略:从网页采集到数据可视化
// 引入必要的模块
const puppeteer = require('puppeteer');
const fs = require('fs');
const path = require('path');
// 定义爬取函数
async function crawlAndVisualize(url) {
// 启动浏览器
const browser = await puppeteer.launch();
// 打开新页面
const page = await browser.newPage();
// 导航至URL
await page.goto(url);
// 等待数据加载完成,具体选择器根据实际情况调整
await page.waitForSelector('.data-loaded');
// 捕获页面截图
await page.screenshot({ path: 'screenshot.png' });
// 提取数据,这里以表格数据为例
const data = await page.evaluate(() => {
const table = document.querySelector('table'); // 根据实际情况选择表格元素
const rows = Array.from(table.querySelectorAll('tr'));
return rows.map(row => Array.from(row.querySelectorAll('td')).map(cell => cell.textContent));
});
// 将数据写入CSV文件
const csvContent = data.map(row => row.join(',')).join('\n');
fs.writeFileSync('data.csv', csvContent, 'utf-8');
// 关闭浏览器
await browser.close();
}
// 使用函数爬取指定的网页
crawlAndVisualize('https://example.com').then(() => {
console.log('爬取和数据可视化完成');
}).catch(error => {
console.error('爬取过程中出现错误:', error);
});
这段代码展示了如何使用Puppeteer结合Node.js的文件系统模块从网页中抓取数据并将其保存为CSV格式。在实际应用中,你需要根据目标网页的结构调整选择器和提取数据的逻辑。
评论已关闭