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

news2024/9/28 17:26:27

爬虫代理

引言

在现代网页抓取中,性能数据的记录与分析是优化抓取效率和质量的重要环节。本文将介绍如何利用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.coloradmin.cn/o/2168529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode面试经典150题-322.零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…

[数据库实验一]数据库和表

目录 一、实验目的与要求 二、实验内容 实验小结 一、实验目的与要求 1.掌握MySQL中如何创建数据库和表的方法 2.熟练掌握MySQL的数据类型、主键实体完整性的设置 3.参照完整性的定义及应用 4.插入数据 5.数据库的备份操作 二、实验内容 1、创建名为fruit…

CleanMyMac X 评价、介绍、使用教学|Mac系统最推荐的系统优化和清理软件工具!

本篇文章要带大家看一款知名的Mac系统优化、清理工具– CleanMyMac X ,并且也会附上详细的介绍和使用教学。 链接: https://pan.baidu.com/s/1_TFnrIVH1NGsZPsA3lpwAA 提取码: dpjw CleanMyMac X-安装包:https://souurl.cn/QUYb57 为什么Mac电脑需要装系…

Cilium + ebpf 系列文章-什么是ebpf?(一)

前言: 这篇非常非常干,很有可能读不懂。 这里非常非常推荐,建议使用Cilium官网的lab来辅助学习!!!Resources Library - IsovalentExplore Isovalents Resource Library, your one-stop destination for ins…

FocSAM

Dynamic Window简写为Dwin 辅助信息 不建议复现

TCN-Transformer+GRU多变量时间序列预测(Matlab)

超强来袭!双路创新!TCN-TransformerGRU多变量时间序列预测(Matlab) 目录 超强来袭!双路创新!TCN-TransformerGRU多变量时间序列预测(Matlab)效果一览基本介绍程序设计参考资料 效果一…

智慧农业的引擎:高标准农田灌区信息化的探索与实践

在现代农业的广阔图景中,智慧农业作为一股革新力量,正逐步重塑着传统农业的面貌。其中,高标准农田灌区的信息化建设不仅是智慧农业的重要引擎,更是实现农业可持续发展、提高资源利用效率的关键路径。 高标准农田灌区信息化的内涵…

Linux下的基本指令/命令(二)

热键 Tab: 连点两次 对命令进补齐 或者 显式 以目前所需字母 开头的指令。 也可以进行路径补齐 或者 显示所写的文件所处路径上的所有文件。 如果什么也没写,直接按Tab会显示所有命令 Ctrl C: 一旦出现失控的状态,或者任何无法…

刷题计划 day10 栈与队列上【用栈实现队列】【用队列实现栈】【有效的括号】【删除字符串中的所有相邻重复项】

⚡刷题计划day10栈与队列继续,可以点个免费的赞哦~ 往期可看专栏,关注不迷路, 您的支持是我的最大动力🌹~ 目录 ⚡刷题计划day10继续,可以点个免费的赞哦~ 往期可看专栏,关注不迷路, 您的…

Linux云计算 |【第四阶段】NOSQL-DAY2

主要内容: Redis集群概述、部署Redis集群(配置manage管理集群主机、创建集群、访问集群、添加节点、移除节点) 一、Redis集群概述 1、集群概述 所谓集群,就是通过添加服务器的数量,提供相同的服务,从而让…

CSDN文章导出md并迁移至博客园

一、获取所有文章地址 1.进csdn首页,点击自己的头像 2.在个人主页界面,按F12打开控制台,并找到network,找到get-business开头的请求,右键copy他的url 3.选择console,输入一下代码,其中fetch里面的url是你刚…

62.【C语言】浮点数的存储

目录 1.浮点数的类型 2.浮点数表示的范围 3.浮点数的特性 《计算机科学导论》的叙述 4.浮点数在内存中的存储 答案速查 分析 前置知识:浮点数的存储规则 推导单精度浮点数5.5在内存中的存储 验证 浮点数取出的分析 1.一般情况:E不全为0或不全为1 2.特殊情况:E全为0…

P335_0334韩顺平Java_零钱通介绍

目录 P335_0334韩顺平Java_零钱通介绍代码过程编程OOP(Object-Oriented Project) 参考资料 P335_0334韩顺平Java_零钱通介绍 先完成显示菜单,并可以选择。完成零钱通明细。完成收益入账。消费。退出。 PS:判断时尽量用不正确的条…

BEV学习---LSS4-模型训练

主要借鉴如下链接: https://blog.csdn.net/m0_51579041/article/details/140746160 测试命令如下,均已跑通: # 验证集iou计算: python main.py eval_model_iou mini -bsz1 --nworkers0 --gpuid0 --modelf./model/model525000.pt…

【CSS/HTML】圣杯布局和双飞翼布局实现两侧宽度固定,中间宽度自适应及其他扩展实现

前沿简介 圣杯布局和双飞翼布局是前端重要的布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。 圣杯布局来源于文章In Search of the Holy Grail,双飞翼布局来源于淘宝UED。 两者的实现方式有差异,但是都…

Java文件上传同时传入JSON参数

前言 此篇文章用于解决一个接口内同时完成文件的上传及JSON参数的传入(生产环境已验证); 1.准备接口 import cn.cdjs.vo.UserVO; import cn.hutool.json.JSONUtil; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFi…

黑马头条day4 自媒体文章自动审核

阿里云内容安全调用 其实这个接口调用不是很难 但是需要花钱 就没买 我开了按量计费 但是还是不行 所以就没测试 于是尝试自己写返回成功值 效果不好 后来发现不如直接在函数里边取消调用文字和图片审核 这样更简单 远程调用与降级处理 这里有个bug调试了好久 第一个就是总…

C++面试题第一弹

TCP、UDP区别及使用场景 从TCP和UDP的特点来看,连接性,可靠性,以及面向字节流还是数据报来说。 区别: 连接性:TCP面向连接,而UDP无连接。对TCP来说,在数据传输之前,通信双发需要…

gradle镜像配置

当我们在Android Studio中新建项目或者打开已有项目时,会下载gradle文件,当使用官方的下载源时很慢,经常会下载失败,国内我们可以使用腾讯或者阿里的镜像,一般下载速度很快。 一、gradle下载地址 官网地址&#xff1…

02——springboot2——热部署

什么是热部署 简单说就是你程序代码修改了,现在要重新启动服务器才能加载刚刚新写的代码,如果每次修改代码都要重新启动服务器,这样就真的太麻烦了(运行一些稍微较大的项目,运行时间是很长的,所以每次修改…