分析一个URL查询字符串的最佳方法分析一个URL查询字符串的最佳方法(Best way to par

2019-05-13 12:20发布

什么是解析数据了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=

Answer 1:

里的urllib.parse模块是你的朋友: https://docs.python.org/3/library/urllib.parse.html

退房urllib.parse.parse_qs (解析查询字符串,通过邮递方式,至少在非多数据GET或表单数据发送到服务器,即表单数据)。 还有cgi.FieldStorage解释多的数据。

用于解析的HTTP交互的其余部分,见RFC2616 ,这是HTTP / 1.1协议规范。



Answer 2:

下面是使用python3一个例子urllib.parse

from urllib.parse import urlparse, parse_qs
URL='https://someurl.com/with/query_string?i=main&mode=front&sid=12ab&enc=+Hello'
parsed_url = urlparse(URL)
parse_qs(parsed_url.query)

输出:

{'i': ['main'], 'enc': [' Hello '], 'mode': ['front'], 'sid': ['12ab']}

注意python2: from urlparse import urlparse, parse_qs

请参考: https://pythonhosted.org/six/#module-six.moves.urllib.parse



Answer 3:

如果从查询字符串需要唯一的密钥,使用dict()parse_qsl()

import urllib.parse
urllib.parse.urlparse('https://someurl.com/with/query_string?a=1&b=2&b=3').query
    a=1&b=2&b=3
urllib.parse.parse_qs('a=1&b=2&b=3');
    {'a': ['1'], 'b': ['2','3']}
urllib.parse.parse_qsl('a=1&b=2&b=3')
    [('a', '1'), ('b', '2'), ('b', '3')]
dict(urllib.parse.parse_qsl('a=1&b=2&b=3'))
    {'a': '1', 'b': '3'}


文章来源: Best way to parse a URL query string