当前位置: 首页 > 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.dtcms.com/a/344363.html

相关文章:

  • C++中的右值引用与通用引用:std::move与std::forward的正确使用 (Effective Modern C++ 条款25)
  • 中项-基础知识分享12-软件工程
  • 保护 PDF 格式:禁止转换为其他格式文件
  • Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
  • Spring 框架深度解析:从核心原理到实战应用
  • Hyperledger Fabric官方中文教程-改进笔记(十四)-向通道中添加组织
  • 微服务之间的调用关系如何处理,才能防止循环依赖
  • 用 JavaScript 打造实用 TodoList:从理论到实战的前端实践
  • 【机器学习深度学习】vLLM的核心优化技术详解
  • 嵌入式第三十五天(网络编程)
  • EP4CE40F23I7N Altera FPGA Cyclone IV E
  • Python爬虫实战:构建在线书店数据分析系统
  • element ui v2,用js关闭MessageBox 弹框
  • GPS欺骗式干扰的产生
  • NoCode-bench:自然语言驱动功能添加的评估新基准
  • 深度学习入门介绍
  • 【Prometheus】 + Grafana构建【Redis】智能监控告警体系
  • 微信原生下载互联网oss资源保存到本地
  • 微信HOOK 实现自动下载视频
  • 云原生俱乐部-k8s知识点归纳(7)
  • 手机、电脑屏幕的显示坏点检测和成像原理
  • 解决方案:新时代电力的安全命题
  • 发版混乱怎么规范
  • Linux学习-通信(网络通信)
  • 三,设计模式-抽象工厂模式
  • Ubuntu/Debian修改网卡名字enP3p49s0为eth0
  • JUC之CompletionService
  • 【基础算法】离散化
  • AI-调查研究-58-机器人 从工厂到家庭,机器人正悄悄改变世界的每个角落
  • RCE的CTF题目环境和做题复现第3集