Python:从URL查询字符串中获取数据

时间:2016-01-26 16:49:17

标签: python string python-2.7 url

所以我有一个字符串,其中有一个URL。 URL /字符串是这样的:
https://example.com/main/?code=32ll48hma6ldfm01bpki&data=57600&data2=aardappels
我想得到code,但我不知道怎么做。我查看了.split()方法。但我不认为这是有效的。而且我无法找到让它运转的方法。

4 个答案:

答案 0 :(得分:4)

使用urlparse模块中的parse_qsurlparse

from urlparse import urlparse, parse_qs
# For Python 3:
# from urllib.parse import urlparse, parse_qs

url = ' https://example.com/main'
url += '/?code=32ll48hma6ldfm01bpki&data=57600&data2=aardappels'

parsed = urlparse(url)
code  = parse_qs(parsed.query).get('code')[0]

它完全符合您的要求。

答案 1 :(得分:0)

正如@IronFist所提到的,.split()方法只有在你认为没有'&'在代码参数中。如果没有,您可以多次使用.split()方法并获得所需的代码参数:

url = "https://example.com/main/?code=32ll48hma6ldfm01bpki&data=57600&data2=aardappels"
code = url.split('/?')[1].split('&')[0]

答案 2 :(得分:0)

使用正则表达式:

>>> import re
>>> url = 'https://example.com/main/?code=32ll48hma6ldfm01bpki&data=57600&data2=aardappels'
>>> code = re.search("code=([0-9a-zA-Z]+)&?", url).group(1)
>>> print code
32ll48hma6ldfm01bpki

答案 3 :(得分:0)

有很多方法可以做到这一点!更简单的方法是使用urlparse。另一种方法是使用正则表达式,但专家建议在URL上使用正则表达式可能很乏味,代码变得非常难以维护。

另一种简单的方法如下所示,

str1 = 'https://example.com/main/?code=32ll48hma6ldfm01bpki&data=57600&data2=aardappels'
codeStart = str1.find('code=')
codeEnd = str1.find('&data=')
print str1[codeStart+5:codeEnd]