python3 urllib.parse模块的使用

介绍

This module defines a standard interface to break Uniform Resource Locator (URL) strings up in components (addressing scheme, network location, path etc.), to combine the components back into a URL string, and to convert a “relative URL” to an absolute URL given a “base URL.”
这是官方对parse模块的解释,大概的意思是:该模块定义了一个标准接口,用于在组件中解析统一资源定位符(URL)字符串(寻址方案,网络位置,路径等),将组件组合回URL字符串,并将“相对URL”转换为绝对URL给出“基本URL”。简单的说parse模块是用来解析和处理url。

安装

urllib.parse模块是ulilib库的子模块,直接在控制台cmd中使用命令pip install urllib安装urllib第三方库。

使用

1.urlparse()

urllib.parse.urlparse(urlstring, scheme=’’, allow_fragments=True)
urlparse()函数用来解析url,返回一个包含:协议(scheme) 域名(netloc) 路径(path) 路径参数(params) 查询参数(query) 片段(fragment)的ParseResult元组。因此可以同时通过索引和命名属性来获取 URL 中各部分的值。这六个元素的属性如下所示:

属性索引
scheme0URL方案说明符
netloc1网络位置部分
path2分层路径
params3最后一个路径元素的参数
query4查询组件
fragment5片段识别

例如:

import urllib.parse 
url = 'https://www.python123.io/tutorials/web_crawler_intro/#/section3/part2'
result = urllib.parse.urlparse(url)
print(result)
print(result.netloc)
print(result.fragment)

返回结果:

ParseResult(scheme='https', netloc='www.python123.io', path='/tutorials/web_crawler_intro/', params='', query='', fragment='/section3/part2')
www.python123.io
/section3/part2

2.urlunparse()

urlunparse()函数用来反解析url,相当于urlparse的逆过程。

url_new = urllib.parse.urlunparse(result)
print(url_new)
#初始url=https://www.python123.io/tutorials/web_crawler_intro/#/section3/part2

可以对比返回的结果与原url:

https://www.python123.io/tutorials/web_crawler_intro/#/section3/part2

3.urlsplit()/urlunsplit()

url.parse.urlsplit(url, scheme=’’, allow_fragments=True)
urlsplit()函数与urlparse()函数类似,唯一的区别是:urlsplit()函数解析url返回五个元素(缺少了params)。
urlunsplit()函数是urlsplit()的逆过程。

url1 = 'https://www.csdn.net/'
result1 = urllib.parse.urlsplit(url1)
print(result1)
url1_new = urllib.parse.urlunsplit(result1)
print(url1_new)

返回结果:

SplitResult(scheme='https', netloc='www.csdn.net', path='/', query='', fragment='')
https://www.csdn.net/

4.quote()/unquote()

quote(string, safe=’/’, encoding=None, errors=None)
quote()函数对输入的字符串进行编码,unquote()函数对输入的字符串解码,相当于quote的逆过程。(例如在百度上搜索书包的的网页是:‘https://www.baidu.com/s?wd=书包’, 但有些地方不支持中文字符串‘书包’,所以需要对’书包’进行编码)

word = '书包'
text = urllib.parse.quote(word,encoding='utf-8')
print(text)
text_new = urllib.parse.unquote(text,encoding='utf-8')
print(text_new)

返回的结果:

%E4%B9%A6%E5%8C%85
书包

5.urlencode()

urlencode(query, doseq=False, safe=’’, encoding=None, errors=None)
urlencode()函数把传入的参数对转换成标准的url格式。传入参数的格式只能为下面两种:

  1. [(key1,value1),(key2,value2),…]
  2. {‘key1’:‘value1’,‘key2’,‘value2’,…}
d={'wd':'bag','co':'black'}  #搜索包,颜色是黑色
result_group = urllib.parse.urlencode(d)
print(result_group)

输出结果:

wd=bag&co=black

6.urljoin()

urljoin(base, url, allow_fragments=True)
urljoin()函数用于拼接url。

end_url = urllib.parse.urljoin('https://www.baidu.com/',result_group)
print(end_url)

输出结果:

https://www.baidu.com/wd=bag&co=black

总结

urllib.parse模块主要用于解析url,适用于网页全站爬取中对网页链接的筛选,提取。是一个很值得学习的python库。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值