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

利用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.cnconst 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.lryc.cn/news/450942.html

相关文章:

  • YOLOv5改进系列(1)——添加CBAM注意力机制
  • 无头单向非循环java版的模拟实现
  • Bert Score-文本相似性评估
  • Pyenv管理Python版本,conda之外的另一套python版本管理解决方案
  • 快速实现AI搜索!Fivetran 支持 Milvus 作为数据迁移目标
  • css的页面布局属性
  • RTE 大会报名丨AI 时代新基建:云边端架构和 AI Infra ,RTE2024 技术专场第二弹!
  • 【React】入门Day01 —— 从基础概念到实战应用
  • <<机器学习实战>>10-11节笔记:生成器与线性回归手动实现
  • 链表OJ经典题目及思路总结(一)
  • 初识chatgpt
  • 【60天备战2024年11月软考高级系统架构设计师——第33天:云计算与大数据架构——大数据处理框架的应用场景】
  • 如何设计具体项目的数据库管理
  • 对于 Vue CLI 项目如何引入Echarts以及动态获取数据
  • 【Linux笔记】在VMware中,为基于NAT模式运行的CentOS虚拟机设置固定的网络IP地址
  • 一文上手Kafka【中】
  • Ubuntu如何如何安装tcpdump
  • 3-3 AUTOSAR RTE 对SR Port的作用
  • hive/impala/mysql几种数据库的sql常用写法和函数说明
  • 论文阅读:LM-Cocktail: Resilient Tuning of Language Models via Model Merging
  • 8640 希尔(shell)排序
  • Linux 安装redis主从模式+哨兵模式3台节点
  • [BCSP-X2024.小高3] 学习计划
  • Android Debug Bridge(ADB)完全指南
  • 再次重逢,愿遍地繁花
  • 数据结构和算法基础(一)
  • 【超长好文】网络安全从业者面试指南
  • 基于大数据的高校新生数据可视化分析系统
  • 【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU
  • STM32的DMA技术介绍