前言

该文章主要说明Python3 标准库urllib的使用。

修改时间:20191216

修改时间:20191217

修改时间:20191218

添加urllib.parse.urlencode,urllib.request.Request方法解释

天象独行

0X01;urllib作用是什么?

  urllib是Python3的一个内置标准库,主要用来进行http请求。其中主要包含四个常见模块。分别是:request,error,parse,robotparser。request模块功能提供一个基本的请求功能,来模拟http请求。error异常处理模块,主要功能是在出现错误的时候可以捕获异常。parse工具模块,提供了URL处理的方法,比如:拆分,解析,合并等。robotparser模块主要用来识别网站的robots.txt文件。

0X02;urllib.request模块

  urllib.request模块当中常见使用方法有:

  A;urlopen(url,data,timeout) 作用打开一个url方法,返回一个文件对象HttpResponse,然后可以进行类似文件对象的操作。

例如:基本使用方法。

  B;urllib.request.urlretrieve(url,filename=None,reporthook=None,data=None)作用下载定制的url内容到本地。

  url:外部或者本地url。

  filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据)。

  reporthook:是一个回调函数,当连接上服务器,以及相应的数据块传输完毕的时候会触发该回调

  data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename,headers),filename表示保存到本地的路径,header表示服务器的响应头。

  基本使用:

  C;Request()方法作用是发送一个请求,常见操作是构建HTTP请求。

举例:构建请求头:

0X03;urllib.error模块

  urllib.error模块作用是可以接收urllib.request产生的异常。其中包含了两个方法。即URLError,HTTPError。

  A;URLError举例

  B;HTTPError举例:

0X04;urllib.parse模块

  A;urlparse()方法作用:将URL分解为六个组件分别是:协议,位置,路径,参数,查询,片段

举例:

  B;urlsplit方法类似于urlparse,区别在于urlsplit没有返回“params”

  C;urlunparse(parts)方法作用,从urlparse()返回的元组元素构造一个URL。

举例:

  D;urlunsplit方法与urlunparse类似。

  E;parse_qs和parse_qsl

  urllib.parse.parse_qs返回字典

  urllib.parse.parse_qsl返回列表

举例:

  F;urljoin(base,url,allow_fragments=True)作用组合两个URL.。注释:url一定需要完整的url。

举例:

  G;quout()方法,作用URL编码

  H;unquote()方法作用url解码

举例:

  

  I;urlencode(data)作用针对一个字典data,将字典编码处理并且拼接为query_string。

举例:

0X0X;补充说明:

  A;HttpRequest类是一个封闭HTTP提交信息的类型,而封闭HTTP输出信息的类型就是HttpResponse类,使用HttpResponse类可以实现三种类型的输出,即文本,URL,二进制流.HTTPResposne 类型的对象,它主要包含的方法有 read()、readinto(),getheader(name)、getheaders()、fileno() 等方法和 msg、version、status、reason、debuglevel、closed 等属性。

  read() 读取相应内容,内容是字节类型

  geturl() 获取请求url

  getheaders() 获取请求头信息,列表里面有元组

  getcode() 获取状态码

  readlines() 按行读取,返回列表,都是字节类型

详情参考下面链接:https://www.iteye.com/blog/guoying252166655-2041373

  B;try...except 在程序出现异常处理是使用。格式 try: 执行代码 except:发生异常时执行的代码。详情参考下面链接:https://www.runoob.com/python3/python3-errors-execptions.html

  C;__main__是Python的内置变量,用于代指当前模块。详细参考下面链接:https://www.cnblogs.com/chenhuabin/p/10118199.html

  D;字典是另一种可变容器模型,且可存储任意类型的对象。

  E;列表是最常见的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

Python3---标准库---urllib的更多相关文章

  1. Python3 标准库

    Python3标准库 更详尽:http://blog.csdn.net/jurbo/article/details/52334345 文本 string:通用字符串操作 re:正则表达式操作 diff ...

  2. python023 Python3 标准库概览

    Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...

  3. python3标准库总结

    Python3标准库 操作系统接口 os模块提供了不少与操作系统相关联的函数. ? 1 2 3 4 5 6 >>> import os >>> os.getcwd( ...

  4. 8.Python3标准库--数据持久存储与交换

    ''' 持久存储数据以便长期使用包括两个方面:在对象的内存中表示和存储格式之间来回转换数据,以及处理转换后数据的存储区. 标准库包含很多模块可以处理不同情况下的这两个方面 有两个模块可以将对象转换为一 ...

  5. 7.Python3标准库--文件系统

    ''' Python的标准库中包含大量工具,可以处理文件系统中的文件,构造和解析文件名,还可以检查文件内容. 处理文件的第一步是要确定处理的文件的名字.Python将文件名表示为简单的字符串,另外还提 ...

  6. 1.Python3标准库--前戏

    Python有一个很大的优势便是在于其拥有丰富的第三方库,可以解决很多很多问题.其实Python的标准库也是非常丰富的,今后我将介绍一下Python的标准库. 这个教程使用的书籍就叫做<Pyth ...

  7. 比较两个文件的异同Python3 标准库difflib 实现

    比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...

  8. 3.Python3标准库--数据结构

    (一)enum:枚举类型 import enum ''' enum模块定义了一个提供迭代和比较功能的枚举类型.可以用这个为值创建明确定义的符号,而不是使用字面量整数或字符串 ''' 1.创建枚举 im ...

  9. 9.Python3标准库--数据压缩与归档

    ''' 尽管现代计算机系统的存储能力日益增长,但生成数据的增长是永无休止的. 无损(lossless)压缩算法以压缩或解压缩数据花费的时间来换取存储数据所需要的空间,以弥补存储能力的不足. Pytho ...

  10. python系列十七:Python3 标准库概览

    #!/usr/bin/python #-*-coding:gbk-*- #Python3 标准库概览'''操作系统接口os模块提供了不少与操作系统相关联的函数.建议使用 "import os ...

随机推荐

  1. 1.Android-入门之系统架构介绍

    1.Android 系统架构 android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层,如下图所示: 2.application应用程序层 该层提供一些核 ...

  2. Java安装JDK

    因为Java程序必须运行在JVM之上,所以,我们第一件事情就是安装JDK. 搜索JDK 13,确保从Oracle的官网下载最新的稳定版JDK: 1.选择JDK版本 2.同意协议,点击合适系统平台下载 ...

  3. C#封装继承

    面向对象开发有三大特性(特点 / 特征) : 封装, 继承, 多态.我们今天主要讨论封装和继承,多态会在下篇中讨论. 一.封装: 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法 ...

  4. 【JS档案揭秘】第三集 深入最底层探秘原型链

    关于这部分我看过大量的文章,数不胜数,包括阮一峰的继承三部曲,还有各种慕课的视频教程,网上无数继承方法的对比.也对很多概念存在长期错误的理解.今天做一个正确的总结,用来给原型链和继承这块知识画上句号, ...

  5. Redis缓存NoSQL

    下面是一些关于Redis比较好的文章,因为篇幅较大,我就将其折叠起来了.不太喜欢分不同的笔记去记载,除非真的很多很多.所以本文不仅要对Redis做简单的介绍,还要分别介绍Redis中的五种结构,并会贴 ...

  6. JS---体验DOM操作

    体验DOM操作 1. <!--html代码--> <input type="button" value="弹框" onclick=" ...

  7. Kingfisher

    Kingfisher ima1.kf.setImage(with: url) 为了兼容macOS, IOS 通过协议定义了kf,实际上就是本身 KingfisherOptionsInfo 可以配置一些 ...

  8. Android Studio 3.0+ Record Espresso Test 自动化测试

    准备工作 1.将android studio 版本升级到3.0+2.百度下载夜神模拟器 夜神模拟器的基本设置 PS:以上就是夜神模拟器的基本设置 Android Studio 连接夜神模拟器 //夜神 ...

  9. 【好书推荐】《剑指Offer》之硬技能(编程题12~16)

    本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword <[好书推荐]& ...

  10. 编译原理之DFA最小化,语法分析初步

    1.将DFA最小化: 状态转换图: 识别语言:b*ac*(da)*bb* 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 (1)正规式: S -> 0(1S+ ...