Python爬虫:教你如何使用Python解析HAR请求文件(附源码)

2024-01-19 02:59

本文主要是介绍Python爬虫:教你如何使用Python解析HAR请求文件(附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“python学习与大数据分析”关注

一、什么是HAR文件?

在Web开发和网络性能测试中,Har文件是一个非常重要的工具。Har文件是HTTP Archive的缩写,它是一个格式化的文件,包含了HTTP请求和响应的所有信息,对于我们来说,我们就可以通过解析这些请求获取到其中的请求头、请求方法、请求参数、响应内容。

二、如何获取到HAR文件?

要将网络请求保存为HAR文件,您可以使用浏览器的开发者工具。以下是我笔记本自带的联想浏览器中执行此操作的步骤(其他浏览器应该也差不多):

  1. 打开联想浏览器并进入开发者工具。您可以通过按下F12键或右键单击页面并选择“检查”来打开开发者工具。

  2. 在开发者工具中,转到“Network”选项卡。

  3. 在页面上执行所需的网络请求。例如,您可以在页面上单击链接或提交表单。

  4. 在Network选项卡中,您将看到所有网络请求的列表。选择您想要保存为HAR文件的请求。

  5. 右键单击选定的网络请求并选择“Save all as HAR with Content”。

  6. 选择保存文件的位置,然后单击“保存”。

三、使用Python解析HAR文件

由于工作原因,我之前写过解释HAR文件的函数,这里直接贴出来给大家直接使用:


'''
describe:
date:2023/10/23
'''
import json# 传入
def har_analyze(harfile):print(f"开始处理HAR文件:{harfile}")try:with open(harfile, 'r', encoding='utf-8') as harfile:conent = harfile.read()if conent.startswith(u'\ufeff'):conent = conent.encode('utf8')[3:].decode('utf8')har_dict = json.loads(conent)requestList = har_dict['log']['entries']if len(requestList) == 0:msg = "HAR文件中无请求内容!"return msgtest_data_list = [['No', 'case_name', 'url', 'method', 'headers', 'req_params', 'req_data', 'req_json','assert_method', 'expect_data', 'req_var', 'resp_var', 'result']]No = 1for i in range(len(requestList)):item = requestList[i]method = item['request']['method']if method.lower() not in ['get', 'post']:continueurlString = item['request']['url']start = urlString.index('://')tempStr = urlString[start + 3:]url_start = tempStr.index('/')protocol = urlString[:start + 3]domain = tempStr[:url_start]host = protocol + domainURL = tempStr[url_start:]requst_type = item['request']['postData']['mimeType']request_data  = item['request']['postData']['text']req_params,req_json,req_data = '', '', ''if request_data and requst_type:# get请求URL中已经携带参数,此处不再提取参数if method.lower() == 'post' and requst_type == 'application/json':req_json = request_dataelse:req_data = request_datanew_headers = {}headers = item['request']['headers']for j in headers:# try:#     if j['name'] == 'Cookie' :#         j['value'] = '${Cookie}'#     if j['name'] == 'Authorization':#         j['value'] = '${Authorization}'# except Exception as e:#     passnew_headers[j['name']] = j['value']response = item['response']['content']['text']if not response:continuenew_list = [f'{No}', f'testcase_{No}', f'{URL}', f'{method}', f'{json.dumps(new_headers)}', f'{req_params}',f'{req_data}', f'{req_json}', 'AssertJsonTree', f'{response}', '', '', '']test_data_list.append(new_list)No +=1if len(test_data_list)>1:print(f"HAR文件解析成功,共有:{len(test_data_list)-1}个请求")return test_data_list,hostelse:print("HAR解析出来的数据为0个请求")returnexcept Exception as e:print("HAR文件解析失败")

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除

这篇关于Python爬虫:教你如何使用Python解析HAR请求文件(附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621078

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal