我们一般见到的url地址都是字符串形式,例如:http://api.bilibili.com/x/web-interface/view?aid=44699780
请求协议:
http
请求域名:api.bilibili.com
请求相对路径:/x/web-interface/view
请求参数:aid=44699780
我们在开发当中,如何快速的取到上面这些参数呢?
用正则?------->NO
在python3当中有自带的库urllib.parse
,python2当中是w3lib.url
,使用方法跟urllib.parse
类似,这里不做演示
import urllib.parse
url = 'http://api.bilibili.com/x/web-interface/view?aid=44699780'
urllib.parse.urlparse(url) # 查看ParseResult对象
Out[56]: ParseResult(scheme='http', netloc='api.bilibili.com', path='/x/web-interface/view', params='', query='aid=44699780', fragment='')
上面运行结果可以看到ParseResult对象对应的参数,接下来我们取
import urllib.parse
url = 'http://API.bilibili.com/x/web-interface/view?aid=44699780'
_ = urllib.parse.urlparse(url)
_ # 查看ParseResult对象
Out[68]: ParseResult(scheme='http', netloc='API.bilibili.com', path='/x/web-interface/view', params='', query='aid=44699780', fragment='')
_.scheme # 请求协议
Out[69]: 'http'
_.netloc # 请求域名
Out[70]: 'API.bilibili.com'
_.path # 请求相对路径
Out[71]: '/x/web-interface/view'
_.query # 请求参数
Out[72]: 'aid=44699780'
_.hostname # 获取小写域名
Out[73]: 'api.bilibili.com'
urllib.parse.parse_qsl(_.query) # 使用urllib.parse.parse_qsl提取请求参数,返回列表
Out[74]: [('aid', '44699780')]
urllib.parse.parse_qs(_.query) # 使用urllib.parse.parse_qs提取请求参数,返回字典
Out[75]: {'aid': ['44699780']}
注意获取小写域名的.hostname
方法,域名是不区分大小写,但是有时候我们获取的数据有大写有小写,可以用这个方法转换。想提取参数可以用urllib.parse.parse_qsl
(返回列表), urllib.parse.parse_qs
方法(返回字典)
python练习题合集
Python3 lambda表达式(匿名函数)使用详解
Scrapy-Redis手动添加添加去重url(指纹)