爬虫基础学习-链接协议分析,熟悉相关函数

1、urlparse:(python标准库中的一个模块,解析和操作url)

标准的url链接格式:scheme://netloc/path;params?query#fragment

scheme(协议) http or https

netloc(网络位置) host

path(路径)

params(携带的参数)

query(查询参数)

fragment(片段) 内部导航

2、urlunparse(组合)

http://www.baidu.com/index.html;user?id=0#comment

3、urlsplit(和urlparse不同的是 它不解析查询参数和片段部分,只分割url返回的是一个元组类型,可以用索引来取)

4、urlunsplit

5、urljoin 将一个相对URL 解析成一个绝对的url,base参数: 基本url,通常是一个绝对的url;url参数:这个是相对的url

结论:base_url 提供了三项内容 scheme、netloc 和 path。如果这 3 项在新的链接里不存在,就予以补充;如果新的链接存在,就使用新的链接的部分。而 base_url 中的 params、query 和 fragment 是不起作用的。

6、parse_qs(get参数的序列化)

7、parse_qsl(将参数转为元组组成列表)

8、quote(url编码)

9、unquote(url解码)

python 复制代码
#!/usr/bin/env python3

from urllib.parse import urlparse, urlunparse, urlsplit, urlunsplit, urljoin, parse_qs, parse_qsl, quote, unquote

url = 'http://www.baidu.com/index.html;user?id=0#comment'


# 1、############urlparse

# 输出URL网址的标准组成:scheme://netloc/path;params?query#fragment
response = urlparse(url=url)
print(response)
print(response.scheme)
print(response.netloc)
print(response.path)
print(response.params)
print(response.query)
print(response.fragment)

result = urlparse(url=url, scheme='https', allow_fragments=False)
print(result.scheme)
print(result.fragment)

# 2、############urlunparse

data = ['http', 'www.baidu.com', 'index.html', 'user', 'id=0', 'comment']
result = urlunparse(data)
print(result)

# 3、############urlsplit

response = urlsplit(url)
print(result)
print(response.scheme)
print(response[1])
print(response.netloc)
print(response.path)
print(response.query)
print(response.fragment)

# 4、############urlunsplit

data = ('http', 'www.baidu.com', 'index.html', 'id=0', 'comment')
result = urlunsplit(data)
print(result)

# 5、############urljoin

base_url = 'https://www.baidu.com'
relative = '/path/to/xxx'
result = urljoin(base_url, relative)
print(result)
print(urljoin('https://www.baidu.com', '/FAQ.html'))
print(urljoin('https://www.baidu.com', 'http://mashibing.com/FAQ.html'))
print(urljoin('https://www.baidu.com/admin.html', 'http://mashibing.com/FAQ.html'))
print(urljoin('https://www.baidu.com?wd=aaa', '?user=1#comment'))
print(urljoin('https://www.baidu.com#comment', '?user=1'))

# 6、############parse_qs

query = 'name=handsomewangbo&age=18'
result = parse_qs(query)
print(result)

# 7、############parse_qsl

query = 'name=handsome_wangbo&age=18'
result = parse_qsl(query)
print(result)

# 8、############quote

key = "帅哥"
result = url + quote(key)
print(result)

# 9、############unquote

print(unquote(result))
相关推荐
-Springer-25 分钟前
STM32 学习 —— 个人学习笔记9-3(FlyMcu 串口下载)
笔记·stm32·学习
weixin_458872611 小时前
东华复试OJ每日3题打卡·复盘103~105
学习
SuniaWang1 小时前
《Spring AI + 大模型全栈实战》学习手册系列 ·专题三:《Embedding 模型选型指南:从 MMTEB 排名到实际应用》
人工智能·学习·spring
问道飞鱼1 小时前
【Tauri框架学习】Windows 11 环境下 Tauri 开发环境安装与问题解决手册
windows·学习·tauri·开发环境
لا معنى له2 小时前
什么是Active Inference(主动推理)? ——学习笔记
笔记·学习
JicasdC123asd2 小时前
并行双分支瓶颈架构改进YOLOv26异构卷积核协同特征提取与残差学习双重突破
学习·yolo·架构
zhouping@2 小时前
JAVA学习笔记day06
java·笔记·学习
罗罗攀3 小时前
PyTorch学习笔记|张量的广播和科学运算
人工智能·pytorch·笔记·python·学习
CDA数据分析师干货分享4 小时前
汉江师范学院数据科学与大数据技术专业大二学生:CDA一级学习经验
大数据·经验分享·学习·数据分析·cda证书·cda数据分析师
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题四:《Ollama 模型管理与调优:让 AI 模型在低配服务器上流畅运行》
人工智能·学习·spring