Python教程

python发送get,post请求

本文主要是介绍python发送get,post请求,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 1、Requests基本介绍

    • 环境安装:pip install Requests
    • requests就是爬虫中一个基于网络请求的模块
    • 作用:模拟浏览器上网,发送请求
    • 资料地址:http://cn.python-requests.org/zh_CN/latest/
  • 2、请求与响应的组成

    • 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
    • 服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息,HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文
  • 3、Requests发送请求

  • 使用 Requests 发送网络请求非常简单。如果我们要发起一个GET/POST请求,直接调用requests库里的GET/POST方法即可

  • GET请求

    • 方法一,参数放在URL中,直接传(不推荐)
import requests
url = "http://japi.juhe.cn/qqevaluate/qqkey=8dbee1fcd8627fb6699bce7b986adc45&qq=283340479"
r = requests.get(url)
print(r.text)
  • 方法二,params参数分开(推荐)
import requests
url = “http://japi.juhe.cn/qqevaluate/qq”
par = {"key":"8dbee1fcd8627fb6699bce7b986adc45","qq":"28XXXXX"}
r = requests.get(url, params=par)
print(r.text)  # 打印返回结果 文本
  • POST请求
    • 传统表单类post请求
    • JSON类型的post请求
      • 注:data参数支持字典格式也支持字符串格式,如果是字典格式,requests方法会将其按照默认表单urlencoded格式转换为字符串,如果是字符串则不转化
      • 如果data以字符串格式传输需要遵循以下几点:
        • 1) 必须是严格的JSON格式字符串,里面必须用双引号,k-v之间必须有逗号,布尔值必须是小写的true/false等等
        • 2)不能有中文,直接传字符串不会自动编码
        • 3)一般来说,建议将data声明为字典格式(方便数据添加修改),然后再用json.dumps()方法把data转换为合法的JSON字符串格式
      • data和json傻傻分不清
方法一:抓包看头部Content-Type参数:
-- application/json   --------------------这种就是传json参数
---application/x-www-form-urlencode -------这种就是传data参数
方法二:直接看参数长相
----{“name1”:”value1”, “name2”,”value2”}  ---这种传json
-- name1=value1&name2=value2
这种传data参数
  • 4、自定义请求头
    • 请求头,一般是传送服务器需要的一些附加信息,其中比较重要的就是User-Agent,Referer,Cookie等,常用的请求说明如下
Accept: 请求报头域,用于指定客户端可接受哪些类型的信息
Accept-Language: 指定客户端可接受的语言类型
Accept-Encoding: 指定客户端可接受的编码
Host:用于指定资源主机的IP和端口号,其内容为请求URL的原始服务器或网关的位置
Cookie:网站为了辨别用户进行会话跟踪而存储在用户本地的数据,它的主要功能是维持当前访问会话。
Referer: 用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做资源统计防盗链接处理等。
User-Agent: 可以是服务器识别客户端使用的操作系统及版本,浏览器及版本信息等。所以在做爬虫时要加上此信息,可以伪装浏览器;不加的话很容易被识别为爬虫。
Conten-Type:互联网媒体类型,用来表示具体请求中媒体类型信息;如text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型
  • 5、Response返回内容
r.status_code     # 响应状态码
r.content           # 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
r.headers          # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.json()             # Requests中内置的JSON解码器 ,json转成python的字典了
r.url                  # 获取url
r.encoding         # 编码格式-- r.cookies           # 获取返回的cookie
 r.text               # 字符串方式的响应体,会自动根据响应头部的字符编码进行解码r.raise_for_status()  # 失败请求(非200响应)抛出异常
r.ok                 # 返回True / False  状态码在200-400之间 返回True, 状态码在400-600之间返回 False
r.history          # 有重定向请求的时候,可以查看重定向记录
 r.apparent_encoding   # 分析响应编码
这篇关于python发送get,post请求的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!