推广网站注册赚佣金,昆山网页网站制作,网站上线 流程,事件营销的经典案例HTTP协议 HTTP 协议#xff1a;一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的#xff0c;基于TCP/IP通信协议嘞传递数据。 HTTP消息结构
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式
请求行(request line)请求…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; charsetutf-8MIME类型描述消息内容类型的标准。通用结构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 requestwith 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)最简单的发送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: Root1-65d7213d-6d15d2b651139df358d943b7}, origin: 42.229.145.105, url: http://httpbin.org/get
}该网址返回的正文是请求的响应信息 args可以通过url直接带入http://httpbin.org/get?nameBobjobteacherheaders请求头中可以看出User-Agent就是我们使用的库函数一些网站需要将User-Agent指定为常用的浏览器。 若要添加请求头则需要用到urllib.Request()类。 requests库 requests库是基于python开发的HTTP库与urllib标准库相比代码要简洁。实际上requests库是在urllib的基础上进行了高度封装。 使用requests库来发送HTTP请求更加简便。 get请求
import requests#设置请求头
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3,
}#传入参数时可以利用params关键字传入接收字典类型与直接在url加入参数效果相同。
#使用post方法时利用data关键字接收参数。r requests.get(https://baidu.com, headers headers)#基本属性
print(type(r))
#响应对象类型 class requests.models.Response
print(r.status_code)
#响应状态码 200
print(r.cookies)
#查看cookies RequestsCookieJar[Cookie BDORZ27315 for .baidu.com/]
print(r.headers)
#查看响应头
print(r.url)
#url#响应正文内容
print(r.text) #相应内容(str)
print(r.content) #响应内容(bytes) 可以用decode解码