当前位置: 首页 > 知识库问答 >
问题:

解析URL查询字符串的最佳方法

都超英
2023-03-14

在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=

共有3个答案

厉令
2023-03-14

如果您需要查询字符串中的唯一键,请使用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'}
杭英杰
2023-03-14

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

查看urllib.parse.parseqs(解析查询字符串,即通过GET发送到服务器的表单数据或通过POST发布的表单数据,至少对于非多部分数据)。还有用于解释多部分数据的cgi.FieldStorage。

要解析HTTP交互的其余部分,请参阅RFC2616,这是HTTP/1.1协议规范。

朱锐
2023-03-14

下面是一个使用python3urllib.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导入urlparse,parse_qs

看:https://pythonhosted.org/six/#module-six.moves.urllib.parse

 类似资料:
  • 问题内容: 我需要解析这样的URL字符串: 我需要将NSString拆分为类似和的标志部分。我一直在用,但是值以随机顺序返回,所以搞砸了。是否有任何类可以轻松解析,因此您基本上可以将其转换为NSDictionary以便能够读取键的值(例如ValueForKey:应该返回)。还是有比使用子字符串更简单的解析方法? 问题答案: **编辑(2018年6月):[ 这个答案更好 您可以queryItems在

  • 问题内容: 我需要从此URL获取查询字符串,并且我不想使用request.META。我已经发现还有两种获取查询字符串的方法: 使用urlparse urlparse.urlparse(url).query 使用url编码 使用urlencode并向其中传递request.GET params字典以获取字符串表示形式。 那么哪种方法更好呢?我的同事更喜欢urlencode,但没有提供令人满意的解释。

  • 我需要从这个URL获取查询字符串https://stackoverflow.com/questions/ask?next=1 > 使用urlparse urlparse.urlparse(url.query) 使用url encode使用urlencode并将request.GET params字典传递到其中以获取字符串表示形式。 那么哪种方式更好呢?我的同事更喜欢urlencode,但没有提供令

  • 问题内容: 我正在使用解析Java中的字符串。但是,没有直接解析字符串的函数,所以我改为这样做: 这是最好的方法吗?我觉得必须有一个更简单的方法…谢谢! 问题答案: 直接回答您的问题-据我所知,没有更好的方法。使用输入源是因为它比较通用,可以处理来自文件,字符串或跨线的输入,这是我的理解。 您还可以尝试使用SAX Xml解析器- 它稍微有点基础,并且使用了Visitor模式,但是可以完成工作,对于

  • 问题内容: 不 使用 html5mode 解析Angular中的查询字符串的最佳方法是什么?(不使用html5mode,因为我们需要支持较旧的浏览器 ) 无论是否使用哈希,我都会得到相同的未定义结果: $ routeParams和$ location.search()都返回未定义: 我可以自己解析window.location.search,但我希望在Angular中有更好的方法。 Plnkr:h

  • 问题内容: 在此“ Hello World”示例中: 如何从查询字符串中获取参数? 他们在文档中提到: 但是我不知道如何使用它。有人可以解释吗? 问题答案: 您可以使用从方法URL模块在请求回调。 我建议您阅读HTTP模块文档,以了解回调函数。您还应该看看http://howtonode.org/之类的网站,并检查Express框架以更快地开始使用Node。