自动创建有效链接
我刚开始学Python,所以请多多包涵 :)
我想知道Python有没有什么内置的方法,可以把变量加到URL里,不管这个URL是什么样子的。
我希望能把一个URL变量(test=1)加到一个可能有以下几种结构的URL中:
http://www.aaa.com (可以简单地在后面加上 "/?test=1")
http://www.aaa.com/home (和上面一样,也可以简单地在后面加上 "/?test=1")
http://www.aaa.com/?location=home (会发现已经有一个 ? 了,所以会在后面加上 &test=1)
http://www.aaa.com/?location=home&page=1 (和上面一样,也会发现已经有一个 ? 了,所以会在后面加上 &test=1)
我很乐意自己写个代码来实现这个功能,但如果Python已经有现成的方法可以做到这一点,那我当然更愿意用这些内置的功能来节省时间 ;-)
提前谢谢你们!
3 个回答
1
是的,urlparse这个库(在Python 3中叫做urllib.parse)可以帮助你完成这个任务:
http://docs.python.org/library/urlparse.html
特别是urlparse和urlunparse这两个方法。
1
你可能想要的是类似于 urllib.urlencode 的东西:http://docs.python.org/library/urllib.html#urllib.urlencode
3
结合了 Lennart Regebro 和 Adam Vendenberg 的建议,你可以这样做:
import urllib
import urlparse
query=urllib.urlencode({"test":1})
urls=['http://www.aaa.com',
'http://www.aaa.com/home',
'http://www.aaa.com/?location=home',
'http://www.aaa.com/?location=home&page=1']
for url in urls:
x=urlparse.urlparse(url)
new_query=(x.query+'&'+query) if x.query else query
y=urlparse.urlunparse((x.scheme,x.netloc,x.path,x.params,new_query,x.fragment))
print(y)
这样会得到
http://www.aaa.com?test=1
http://www.aaa.com/home?test=1
http://www.aaa.com/?location=home&test=1
http://www.aaa.com/?location=home&page=1&test=1