我正在寻找一种在Python 3中解析http请求的原生方法。
This question展示了一种在Python 2中实现它的方法,但使用了现在已弃用的模块(和Python 2),我正在寻找一种在Python 3中实现它的方法。
我主要想弄清楚请求了什么资源,并从一个简单的请求中解析头部。(即):
GET /index.html HTTP/1.1
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
有人能告诉我一个基本的方法来解析这个请求吗?
3条答案
按热度按时间ktecyv1j1#
您可以使用标准库中
email
模块中的email.message.Message
类。通过修改您链接的问题中的answer,下面是解析HTTP头的Python3示例。
假设你想创建一个包含所有头字段的字典:
如果你在python提示符下运行它,结果会是这样的:
jchrr9hc2#
这些字段名中的每一个都应该由回车符分隔,然后是换行符,然后字段名和值由冒号分隔。所以假设你已经有了一个字符串形式的响应,它 * 应该 * 像下面这样简单:
更新4/13
使用链接到post中的示例http resp:
需要进行额外检查以确保
field
不为空。输出:t3irkdon3#
以下是一些Python包,旨在正确解析HTTP协议: