python如何解析HTTP返回的标准数据包
该篇内容由个人博客点击跳转同步更新!转载请注明出处!
前言
最近有一个需求需要频繁调用xx接口,但这个接口调用次数一多就会给你禁掉,而且一禁就是禁一天的那种,只能通过界面模拟用户操作抓取数据包,然后单独对这些数据包进行处理
具体步骤
首先看下需要格式化的数据包长什么样
数据包
这就是完整的一个数据包,网上基本都是格式化json数据包的,但返回的内容中还包含了头信息等所以不能简单的通过json来格式化,另外头信息中可能还有需要用到的信息内容,不能通过正则直接把头信息给删除只保留下面body中的内容。
我们在这里主要用到了
http.client
库中的
HTTPResponse
方法来解析数据包内容,具体代码如下:
import os from http.client import HTTPResponse from io import BytesIO #传给HTTPResponse一个模拟的makefile方法 class FakeSocket(): def __init__(self, response_stream): self._file = BytesIO(response_stream) def makefile(self, *args, **kwargs): return self._file #根据路径遍历出所有数据包文件,并返回对应的文件地址 def all_path(dirname): result = []#所有的文件 for maindir, subdir, file_name_list in os.walk(dirname): for filename in file_name_list: apath = os.path.join(maindir, filename)#合并成一个完整路径 result.append(apath) return result #获取所有需要处理的文件 allfilespath=all_path("F:\\Temp\\线路结果") for path in allfilespath: try: #HTTPResponse内部使用了iso-8859-1解码,所以这里也要写 with open(path,'r',encoding="iso-8859-1") as fo: #获取文件内容 con=fo.read() #HTTPResponse内部使用了iso-8859-1解码,所以这里也要写 source=FakeSocket(con.encode("iso-8859-1")) response = HTTPResponse(source) response.begin() #获取body主体中的内容 result=response.read() pass except Exception as identifier: pass
这样解析就完成了,想要获取头信息的话可以调用response的对应方法进行获取
微信关注我哦!(转载注明出处)
关注我哦
原文地址:https://www.jianshu.com/p/737abbc3ad01
相关推荐
-
《机器学习Python实现_07_01_svm_硬间隔支持向量机与SMO》 python基础
2020-6-11
-
如何科学准确的计算指数对应的PE(平均市盈率)? python基础
2019-8-25
-
python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块) python基础
2019-5-16
-
使用Celery踩过的坑 python基础
2019-3-6
-
wtfPython 一组有趣的、微妙的、复杂的Python代码片段 python基础
2018-2-12
-
MongoDB-比较符及修改器 python基础
2019-8-15
-
时间序列分析-Python实例 python基础
2019-8-25
-
Python 实现刷网页流量工具,并添加代理,报错处理功能 python基础
2019-4-27
-
Python 作用域(scope) 和 LEGB python基础
2020-7-4
-
python之静态属性、类方法、静态方法 python基础
2019-8-15