接口测试 | urllib篇 18 urllib介绍
概述
本文基于Python3分享urllib模块的源码分享,所以不要拿这python2来问我为什么找不到对应的源码。
在python3中urllib由以下几个模块构成:
- parse
- request
- response
- robotparser
- error
下面对这个几个模块进行一一分享。
parse模块
parse模块定义了统一的接口并实现了URL解析和引用功能。
简单的理解:parse模块可以把url进行拆分或组合,下面我们看下示例:
#-*- coding:utf-8 -*-
__author__ = "苦叶子"
from urllib.parse import urlparse
if __name__ == "__main__":
print("urllib url切割实例")
url = "http://username:password@www.baidu.com:80/q=开源优测"
result = urlparse(url)
print("看下切割后的整体结果: ")
print(result)
print("协议: ", result.scheme)
print("连接字符串:", result.netloc)
print("端口号:", result.port)
print("uri资源:", result.path)
print("用户名:", result.username)
print("密码:", result.password)
通过上述实例,我们将学会如何将url中各个属性进行切割出来。
对于parse模块其他的功能,本文就不一一演示了,请参见官网学习。
requset模块
这个模块可以说是urllib最核心的模块了,其定义了系列函数、类用于实现http/https相关协议功能。
下面我们看一个最问简单的应用实例,后续结合实际的API进行深入实例演示:
#-*- coding:utf-8 -*-
__author__ = "苦叶子"
import urllib.request
if __name__ == "__main__":
print("读取www.python.org首页的html源码")
response = urllib.request.urlopen("http://www.python.org")
print("打印下结果")
print(response.read())
通过运行上述代码,将会在console看到一堆的html源码的输出显示。
request模块有着非常强大的功能,后续专门开辟一篇文章来分享。
response模块
response模块比较简单,其定义了http response基本出来方法,作为基类存在,大家有兴趣的可以研究下其源码,了解去编码风格及实现,有利于深入掌握如何处理http的返回值。
这里不做实例演示,因为其提供的方法、功能主要在request模块中进行了应用。
robotparser模块
robotparser模块提供了一个单独的类:robotfileparser,用于处理robot.txt文件。
至于这个文件是干嘛用的你可以访问:http://www.robotstxt.org/norobots-rfc.txt 进行了解、学习。
当你需要研究爬虫时,这个robots.txt是必须深入研究的东西。
error模块
error模块定义了url、http相关的错误基类,总共不到100行代码,很简洁,这里就不做说明了。
小结
本文简要的对urllib的组成进行了说明,后续结合实例进行演示分享,大家先通过本文了解下就好
- 经典Java面试题收集(二)
- 关于表联结方法(一)(r3笔记第57天)
- Go 语言读写 Excel 文档
- 关于索引的使用模式(r3笔记56天)
- 关于oracle中的半连接(r3笔记55天)
- 关于正则表达式第三篇(r3笔记第52天)
- 关于正则表达式第四篇(r3笔记第53天)
- 外部表简单总结(r3笔记第51天)
- 通过shell脚本监控sql执行频率(r3笔记第50天)
- 和Null有关的函数(r3笔记第48天)
- 关于查询转换的一些简单分析(二) (r3笔记第68天)
- 跨网络拷贝文件的简单实践(r3笔记第67天)
- 关于enq: TX - allocate ITL entry的问题分析(r3笔记第66天)
- Tensorflow学习:使用Tensorflow搭建深层网络分类器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 每日一题
- Python每日一题:MRO
- Python每日一题:变量交换
- Python每日一题:__new__ 与 __init__
- Python每日一题:标准库
- Python笔试面试题总结(一)
- Python笔记题编程题答案
- Python每日一题:装饰器(一)
- Python每日一题:关于闭包
- Python每日一题:标准库中的装饰器
- 神器 tmux 介绍
- Iterable、Sequece、Iterator、generator
- leetcode.1071. Greatest Common Divisor of Strings
- Python else与上下文管理器
- 深入分析iter()方法