python中用urlparse来对URL字符进行解析
urlparse方法由两个可选的参数:default_scheme和allow_fragments
default_scheme主要用来为不包含协议部分的URL指定默认协议,此参数默认值为空字符串
allow_fragments则用来指示是否可以对地址进行分片,此参数默认值为"True"
实例:
import urlparse
r=urlparse.urlparse('http://alice:secret@www.hostname.com:80/% 7Ealice/python.cgi?query=text#sample')
print r
print r.scheme
print r.netloc
print r.path
print r.params
print r.query
print r.fragment
print r.username
print r.password
print r.hostname
print r.port
print r.geturl()
r2=urlparse.urlparse("www.python.org/about","http")
print r2
URL的拼合:
当提供了URL中的绝对地址和相对地址的时候,可以使用urlparse模块中的urljoin方法将其拼合起来
import urlparse
r=urlparse.urljoin("http://www.zeroc.com","ice.html")
print r
结果:
http://www.zeroc.com/ice.html
该方法使用时如果相对URL中有协议字段,则优先使用相对URL中的协议,否则使用绝对URL中的协议字段
import urlparse
r=urlparse.urljoin("http://www.python.org","www.python.org/faq")
print r
http://www.python.org/www.python.org/faq
URL的分解:
import urlparse
r=urlparse.urlsplit("http://www.python.org:80/faq.cgi?src=fie")
print r
SplitResult(scheme='http', netloc='www.python.org:80', path='/faq.cgi', query='src=fie', fragment='')
注意:
a={'keyword1':'value1','keyword2':'value2'}
b={'keyword2':'value2','keyword1':'value1'}
print a is b #False
print a==b #True
虽然a,b输出的字符串是一样的,但两者所接受的字典结构数据输入的时候并不一样,这是由
字典内部的无序性造成的
urlencode方法可以接受一个可选的参数,默认为False,即当查询数据列表中的value
也为列表的时候,将其整个使用quote_plus方法进行编码,并作为查询参数的值。而当其值为True的时候,对于上述的这种情况会将value列表中的每个值都和keyword组成一个查询参数值对
实例:
u2=urllib.urlencode([('keyword',('value1','value2','value3'))])
print u2 #keyword=%28%27value1%27%2C+%27value2%27%2C+%27value3%27%29
u3 = urllib.urlencode([('keyword',('value1','value2','value3'))],True)
print u3 #keyword=value1&keyword=value2&keyword=value3