当前位置:   article > 正文

Python urllib模块学习

Python urllib模块学习

HTTP协议

HTTP 协议:一般指HTTP(超文本传输)协议。
HTTP是为Web浏览器和Web服务器之间的通信而设计的,基于TCP/IP通信协议嘞传递数据。

HTTP消息结构

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式

  • 请求行(request line)
  • 请求头(header)
  • 空行
  • 请求数据

在这里插入图片描述

服务器相应消息

HTTP相应也由四个部分组成

  • 状态行
  • 消息报头
  • 空行
  • 响应正文

在这里插入图片描述

HTTP响应头信息

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。
以下是一些例子

  • Allow 服务器支持哪些请求方法
  • Connect-Encoding 文档的编码方法
  • Connect-Length 表示内容长度
  • Connect-Type 表示后面的文档属于什么MIME类型。
    • 该属性用于定义网络文件的类型和网页的编码 例如Connect-Type: text/html; charset=utf-8
    • MIME类型:描述消息内容类型的标准。通用结构type/subtype
  • Date 当前的GMT(格林威治标准时间)时间

HTTP请求方法

HTTP请求方法有很多种,其中1.0版本有 GET、POST、HEAD三种,1.1版本又新增了六种。

  • GET:请求指定的页面信息,并返回实体主体
  • HEAD:类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
  • POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。请求可能导致新的资源的建立或已有资源的修改。

HTTP状态码

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,共五类。

  • 1xx:信息,服务器收到请求,需要操作者继续执行操作
  • 2xx:成功,操作被成功接收并处理
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

urllib 示例

urllib发送get请求

直接上代码,urllib发送get请求

from urllib import request

with request.urlopen('http://httpbin.org/get') as f:
    data = f.read()    #f.read()返回响应正文

#print(data.decode('utf-8'))
#直接输出结果,需要解码

#输出结果到文件
with open('get_response.text', 'wb') as f:
    f.write(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

最简单的发送get请求的方法,使用openurl函数,尽管这个函数能实现的功能较为有限。
http://httpbin.org/get可以帮助学习如何发送get请求。响应的正文包含了get请求的相关信息。

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭/线程中锁的自动获取和释放等。

以下是响应的正文部分:

{
  "args": {}, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Host": "httpbin.org", 
    "User-Agent": "Python-urllib/3.12", 
    "X-Amzn-Trace-Id": "Root=1-65d7213d-6d15d2b651139df358d943b7"
  }, 
  "origin": "42.229.145.105", 
  "url": "http://httpbin.org/get"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

该网址返回的正文是请求的响应信息

  • args可以通过url直接带入:http://httpbin.org/get?name=Bob&job=teacher
  • headers请求头中可以看出,User-Agent就是我们使用的库函数,一些网站需要将User-Agent指定为常用的浏览器。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/131606?site
推荐阅读
相关标签
  

闽ICP备14008679号