当前位置: 首页 > article >正文

利用Puppeteer-Har记录与分析网页抓取中的性能数据

爬虫代理

引言

在现代网页抓取中,性能数据的记录与分析是优化抓取效率和质量的重要环节。本文将介绍如何利用Puppeteer-Har工具记录与分析网页抓取中的性能数据,并通过实例展示如何实现这一过程。

Puppeteer-Har简介

Puppeteer是一个Node.js库,提供了一个高级API来控制Chrome或Chromium浏览器。Har(HTTP Archive)文件格式用于记录网页加载过程中的所有HTTP请求和响应。Puppeteer-Har结合了这两者的优势,使得开发者可以轻松地记录和分析网页抓取中的性能数据。

环境准备

在开始之前,请确保已安装Node.js和npm。然后,安装Puppeteer和puppeteer-har:

npm install puppeteer puppeteer-har
使用代理IP技术

为了避免IP封禁,我们将使用代理IP技术。以下代码示例中使用了爬虫代理的域名、端口、用户名和密码。

实例代码

以下是一个完整的代码示例,展示了如何使用Puppeteer-Har记录和分析今日头条(https://www.toutiao.com)的性能数据,并进行数据归类和存储。

const puppeteer = require('puppeteer');
const { PuppeteerHar } = require('puppeteer-har');

(async () => {
  // 启动浏览器并设置代理 亿牛云爬虫代理www.16yun.cn
  const browser = await puppeteer.launch({
    args: [
      '--proxy-server=http://代理域名:代理端口'
    ]
  });
  const page = await browser.newPage();

  // 设置代理认证
  await page.authenticate({
    username: '代理用户名',
    password: '代理密码'
  });

  // 创建HAR记录器
  const har = new PuppeteerHar(page);

  // 开始记录HAR文件
  await har.start({ path: 'results.har' });

  // 导航到目标页面
  await page.goto('https://www.toutiao.com');

  // 等待页面加载完成
  await page.waitForTimeout(5000);

  // 停止记录HAR文件
  await har.stop();

  // 关闭浏览器
  await browser.close();

  console.log('HAR文件已生成');
})();
数据分析与存储

生成的HAR文件包含了所有HTTP请求和响应的数据。我们可以使用各种工具(如Chrome DevTools或在线HAR查看器)来分析这些数据。以下是一个简单的示例,展示如何解析HAR文件并提取新闻要点和评论。

const fs = require('fs');

// 读取HAR文件
const harData = JSON.parse(fs.readFileSync('results.har', 'utf8'));

// 提取新闻要点和评论
const entries = harData.log.entries;
const newsData = entries.filter(entry => entry.request.url.includes('toutiao.com'));

newsData.forEach(entry => {
  console.log(`URL: ${entry.request.url}`);
  console.log(`Status: ${entry.response.status}`);
  console.log(`Response Time: ${entry.time}ms`);
  console.log('--------------------------------');
});

// 将数据存储到文件
fs.writeFileSync('newsData.json', JSON.stringify(newsData, null, 2), 'utf8');
console.log('新闻数据已存储到newsData.json');
结论

通过本文的介绍,我们了解了如何利用Puppeteer-Har记录与分析网页抓取中的性能数据,并通过实例代码展示了如何实现这一过程。希望本文能为您的网页抓取工作提供有价值的参考。


http://www.kler.cn/a/321352.html

相关文章:

  • 各种电机原理介绍
  • pyparsing如何实现嵌套捕获
  • DP动态规划(装箱问题)
  • 黑马Java面试教程_P8_并发编程
  • 如何实现单例模式?
  • 固定电话采用的是模拟信号还是数字信号?如果通话两端采用不同的信号会发生什么?
  • TikTok的网络环境搭建指南
  • C++实现二叉树的创建删除,dfslfs,求叶子结点个数,求叶子结点个数,求树的高度
  • D19【python接口自动化学习】-python基础之内置数据类型
  • 矿石运输船数据集、散货船数据集、普通货船数据集、集装箱船数据集、渔船数据集以及客船数据集
  • Web3Auth 如何工作?
  • 相机、镜头参数详解以及相关计算公式
  • 【OceanBase 诊断调优】—— GC问题根因分析
  • centos7 启动mongodb时报错ERROR: child process failed, exited with error number 1
  • electron使用npm install出现下载失败的问题
  • 【HTML】img标签和超链接标签
  • Apache Iceberg 概述
  • ansible playbook多个play多个task
  • ChatGPT高级语音助手正式上线!OpenAI:50多种语言、9种声线可选
  • 磨具生产制造9人共用一台工作站
  • elasticsearch的Ingest Attachment插件的使用总结
  • 数据结构之链表(1),单链表
  • 微服务MongoDB解析部署使用全流程
  • C嘎嘎入门篇:类和对象(1)
  • excel单元格增加可选下拉列表
  • 玩转指针(3)