爬虫:URL解析链接

本文介绍了Python urllib库中的parse模块,包括urlparse()、urlunparse()、urlsplit()、urlunsplit()、urljoin()、urlencode()、parse_qs()、parse_qsl()、quote()和unquote()等函数的使用,详细阐述了它们在URL识别、拼接、合并和参数处理等方面的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

urlparse()  :实现URL的识别和分段

urlparse() 方法其他API用法

urlunparse() :实现URL拼接

urlsplit(): 解析URL把params和并到path中

urlunsplit()  :完成链接拼接

urljoin():完成链接的合并

urlencode() :序列化为GET请求参数

parse_qs():反序列:字典

parse_qsl()  反序列化:列表

quote() :将内容转化为URL编码的格式

unquote():将URL内容解码

urllib库里还提供了parse模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取,合并以及链接转换。它还支持如下协议的RUL处理:file,ftp,gopher,hdl,http,imap,mailto,mms,news,nntp,prospero,rsync,rtsp,rtspu,sftp,sip,sips,snews,svn,svn+ssh,telnet和wais。

urlparse()  :实现URL的识别和分段

from urllib.parse import urlparse

result = urlparse("https://www.baidu.com/s/index.html;user?id=5#comment")
print(type(result) ,result)

结果:

<class 'urllib.parse.ParseResult'> 
ParseResult(scheme='https', netloc='www.baidu.com', path='/s/index.html', params='user', query='id=5', fragment='comment')

可以看到:返回结果是一个ParseResult对象,它包含6个部分,分别是 scheme,nteloc,path,params,query,fragment。

大致可以看到urlparse()  方法将其拆分成6个部分。大体观察可以发现,解析是有特定的分隔符。

  • ://  :前面的就是scheme,代表协议;
  • 第一个 / 符号前面便是netloc,即域名
  • 后面是path,即访问路径;
  • 分号; 前面是params
  • 问号 ? 后面是查询条件query,一般用作GET类型的URL;
  • 井号#,后面是描点,用户直接定位页面内部的下拉位置

总上大体得出一个标准的链接格式:scheme://netloc/path;params?query#fragment

urlparse() 方法其他API用法

def urlparse(url, scheme='', allow_fragments=True)

urlstring:这是必填项,即待解析的URL
scheme:他是默认的协议(比如http或是https等),假如这个链接没有携带信息,会将这个作为默认的协议。

from urllib.parse import urlparse

result = urlparse(url="www.baidu.com/s/index.html;user?id=5#comment",scheme="https")
print(type(result) ,result)


结果
<class 'urllib.parse.ParseResult'> 
ParseResult(scheme='https', netloc='', path='www.baidu.com/s/index.html', params='user', query='id=5', fragment='comment')

1、提供的URL没有包含坐前面的scheme信息,但是通过指定默认的 scheme参数,返回的结果是https

from urllib.parse import urlparse

result = urlparse(url="http://www.baidu.com/s/index.html;user?id=5#comment",scheme="https")
print(type(result) ,result)

结果:
<class 'urllib.parse.ParseResult'> 
ParseResult(sc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值