接口测试 | 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的组成进行了说明,后续结合实例进行演示分享,大家先通过本文了解下就好
- 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 数组属性和方法
- PHP使用mongoclient简单操作mongodb数据库示例
- 基于TensorFlow的CNN实现Mnist手写数字识别
- django rest framework 自定义返回方式
- PHP+Ajax实现的检测用户名功能简单示例
- Yii框架学习笔记之session与cookie简单操作示例
- Ajax+Jpgraph实现的动态折线图功能示例
- Python闭包及装饰器运行原理解析
- Django中Q查询及Q()对象 F查询及F()对象用法
- keras.layer.input()用法说明
- python入门:argparse浅析 nargs='+'作用
- PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
- YII框架行为behaviors用法示例
- 浅谈Python里面None True False之间的区别
- python如何导入依赖包
- 深入理解Python 多线程