当前位置: 首页 > news >正文

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

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解码)

#!/usr/bin/env python3from urllib.parse import urlparse, urlunparse, urlsplit, urlunsplit, urljoin, parse_qs, parse_qsl, quote, unquoteurl = '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、############urlunparsedata = ['http', 'www.baidu.com', 'index.html', 'user', 'id=0', 'comment']
result = urlunparse(data)
print(result)# 3、############urlsplitresponse = urlsplit(url)
print(result)
print(response.scheme)
print(response[1])
print(response.netloc)
print(response.path)
print(response.query)
print(response.fragment)# 4、############urlunsplitdata = ('http', 'www.baidu.com', 'index.html', 'id=0', 'comment')
result = urlunsplit(data)
print(result)# 5、############urljoinbase_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_qsquery = 'name=handsomewangbo&age=18'
result = parse_qs(query)
print(result)# 7、############parse_qslquery = 'name=handsome_wangbo&age=18'
result = parse_qsl(query)
print(result)# 8、############quotekey = "帅哥"
result = url + quote(key)
print(result)# 9、############unquoteprint(unquote(result))
http://www.xdnf.cn/news/1347895.html

相关文章:

  • 基于抗辐照性能的ASP4644S电源芯片特性分析与多领域应用验证
  • 笔记本怎么才能更快散热?
  • DataStream实现WordCount
  • 信息结构统一论:物理世界与人类感知、认知及符号系统的桥梁
  • 透射TEM新手入门:衍射斑点标定 1
  • [特殊字符] TTS格局重塑!B站推出Index-TTS,速度、音质、情感表达全维度领先
  • Day25 栈 队列 二叉树
  • 特大桥施工绳断 7 人亡:索力实时监测预警机制亟待完善
  • kvcache比赛记录
  • 集群与负载均衡:HAProxy 与 Nginx 实践
  • 融云Im单独一个拍照或者拍摄插件Plugin
  • 自学嵌入式第二十五天:数据结构-队列、树
  • 配电网重构优化:以减小网损为目标的智能算法实现
  • 20250822给荣品RD-RK3588开发板刷Rockchip原厂的Android14时点亮荣品的8寸屏
  • SN编码升级:从“制造标记”到“数字孪生身份证”
  • There are test failures. clean deploy 异常
  • [RestGPT] RestGPT智能体
  • Bluedroid vs NimBLE
  • 20.9 QLoRA微调实战:1.5B参数Whisper-large-v2在24GB显存实现中文语音识别,CER骤降50%!
  • 使用tauri打包cocos小游戏,并在抖音小玩法中启动,拿到启动参数token
  • ​Kubernetes 详解:云原生时代的容器编排与管理
  • python selenium+pytest webUI自动化基础框架
  • Java 18 新特性及具体应用
  • linux----进度条实现和gcc编译
  • 基于海光DCU平台的cube-studio软件适配
  • BurpSuite 1.4.07.jar 怎么使用?详细安装和抓包教程(附安装包下载)
  • 前端查漏补缺
  • DAY01:【DL 第一弹】深度学习的概述
  • 机器学习在量化中的应用
  • 【计算机网络】 IPV4和IPV6区别