我有一个正在使用的TCP套接字,我想创建一个函数来解析接收到的标头并将其放入字典中。请求进入并存储在我的变量数据中,如下所示:
data = connection.recv(4096).decode()
然后我有了一个包含这些头的单独的py文件
class dictionary:
def __init__(self,data,key,value):
my_dict = {}
#grab the request
my_dict["request"] = data.split[0]
#grab the path
my_dict["path"] = data.split[1]
if(my_dict["request" == "GET"]):
return dictionary
data.split [0]获取请求(无论是GET还是POST请求),而data.split [1]获取路径。在这种情况下,我的主页就是“ /”。我遇到的问题源于请求和路径之后的问题。对于GET请求,我不需要找到请求的“ Content-Length”部分,因为它根本不存在。但是,对于POST请求,我确实需要找到它。我该怎么做呢?作为参考,GET请求如下所示:
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
发布请求的外观如下:
POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
谢谢你!
如果您具有已解析的http文件,我想您可以使用dict()函数将其转换。
您可以从这样的网站中提取http代码:
import requests
from bs4 import BeautifulSoup
your_url = "http://your-url.com"
r = requests.get(url = your_url)
# parsing the data
soup = BeautifulSoup(r.text, 'html.parser')