在python中解析URL查询字符串(例如,表单附加到URL的数据)中的数据的最佳方法是什么?我的目标是接受表单数据并将其显示在同一页面上.我研究了几种不太适合我的方法.
我正在创建一个简单的Web服务器,目的是学习套接字.此Web服务器不会用于任何其他测试目的.
GET /?1pm=sample&2pm=&3pm=&4pm=&5pm= HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost:50000/?1pm=sample&2pm=&3pm=&4pm=&5pm=
Run Code Online (Sandbox Code Playgroud) 我正在寻找python或相关库中的库或函数调用,这将允许我提供表示HTTP req/res的原始文本数据流,并且会吐出该信息是某种有意义的形式,如字典或名单.我不想使用一些内置的类或创建一堆新对象,在我的程序中我收到一些原始数据,这正是我必须使用的.有没有解决方案,或者我必须自己编写HTTP解析器?
编辑:让我澄清一下我到底要做什么.我正在寻找一些像以下字符串的东西:
GET /index.html HTTP/1.1 \r\n
Host:www.stackoverflow.com \r\n
User-Agent:Firefox \r\n
etc.
Run Code Online (Sandbox Code Playgroud)
并寄回一些封装方法,HTTP版本,标题和其他内容的东西.
我最近一直在处理 HTTP 标头。我正在根据 RFC 规定的冒号分隔从 HTTP 标头请求中解析字段和值。在蟒蛇中:
header_request_line.split(":")
Run Code Online (Sandbox Code Playgroud)
但是,如果值字段中允许使用冒号,则会出现问题。考虑:
User-Agent: Mozilla:4.0
Run Code Online (Sandbox Code Playgroud)
这将被分成 3 个字符串,而不是我想要的 2 个。
我正在寻找一种本地方式来解析 Python 3 中的 http 请求。
这个问题显示了一种在 Python 2 中执行此操作的方法,但使用了现已弃用的模块(和 Python 2),我正在寻找一种在 Python 3 中执行此操作的方法。
我主要想弄清楚请求的是什么资源并解析标头和一个简单的请求。(IE):
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
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我解析这个请求的基本方法吗?
我有一个关于Python正则表达式的问题.我没有太多关于Python正则表达式的信息.我正在使用HTTP请求消息并使用正则表达式解析它们.如您所知,HTTP GET消息采用这种格式.
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: 10.2.0.12
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
我想解析URI,方法,用户代理和消息的主机区域.我这份工作的正则表达式是:
r'^({0})\s+(\S+)\s+[^\n]*$\n.*^User-Agent:\s*(\S+)[^\n]*$\n.*^Host:\s*(\S+)[^\n]*$\n'.format('|'.join(methods)), re.MULTILINE|re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
但是,当消息出现时
GET / HTTP/1.0
Host: 10.2.0.12
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
由于主机或用户代理的位置已更改,我无法捕获它们.因此,即使在消息中更改了host,method,uri的位置,我也需要一个能够捕获所有这些的通用正则表达式.
http ×4
python ×4
http-headers ×1
parsing ×1
python-3.x ×1
regex ×1
rfc ×1
string ×1
webserver ×1