使用Python发送请求

 Python3自带的http.client和urllib.request都能发送http请求,不过相对来说使用较麻烦,第三方库requests让发送请求更简单,支持自动编码解码,会话保持,长连等

 requests安装

  • Windows: 打开cmd命令行,输入pip install requests,等待安装完成即可
  • Linux: (建议使用Python3),终端中输入pip3 install requests,等待安装完成即可
  • Mac: (建议使用Python3), sudo python3 -m pip install requests,等待安装完成即可

 验证是否安装成功:

     打开命令行,输入python,在python shell环境下输入import requests没有报错即安装成功

 requests的使用

 一个最简单的GET请求

 发送一个请求分3步:

  1. 组装请求: 请求可能包含url,params(url参数),data(请求数据),headers(请求头),cookies等,最少必须有url
  2. 发送请求,获取响应:支持get,post等各种方法发送,返回的是一个响应对象
  3. 解析响应: 输出响应文本

 打开Pycharm,新建一个demo项目,项目下新建一个Python文件,输入以下内容:

# 导入requests包
import requests 

# 1. 组装请求
url = "http://httpbin.org/get" # 这里只有url,字符串格式 # 2. 发送请求,获取响应 res = requests.get(url) # res即返回的响应对象 # 3. 解析响应 print(res.text) # 输出响应的文本

 带参数的GET请求

import requests 

url = "http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好"  # 参数可以写到url里 res = requests.get(url=url) # 第一个url指get方法的参数,第二个url指上一行我们定义的接口地址 print(res.text) 


import requests 

url = "http://www.tuling123.com/openapi/api"
params = {"key":"ec961279f453459b9248f0aeb6600bbe","info":"你好"} # 字典格式,单独提出来,方便参数的添加修改等操作 res = requests.get(url=url, params=params) print(res.text) 

 传统表单类POST请求(x-www-form-urlencoded)

import requests 

url = "http://httpbin.org/post"
data = {"name": "hanzhichao", "age": 18} # Post请求发送的数据,字典格式 res = requests.post(url=url, data=data) # 这里使用post方法,参数和get方法一样 print(res.text) 

 JSON类型的POST请求(application/json)

import requests 

url = "http://httpbin.org/post"
data = '''{ "name": "hanzhichao", "age": 18 }''' # 多行文本, 字符串格式,也可以单行(注意外层有引号,为字符串) data = '{"name": "hanzhichao", "age": 18}' res = requests.post(url=url, data=data) # data支持字典或字符串 print(res.text) 

 requests库详解

 请求方法

  • requests.get()
  • requests.post()
  • requests.put()
    ...
  • requests.session(): 用于保持会话(session)
    除了requests.session()外,其他请求方法的参数都差不多,都包含url,params, data, headers, cookies, files, auth, timeout等等

 

 请求参数

  • url: 字符串格式,参数也可以直接写到url中
  • params:url参数,字典格式
  • data: 请求数据,字典或字符串格式
  • headers: 请求头,字典格式
  • cookies: 字典格式,可以通过携带cookies绕过登录
  • files: 字典格式,用于混合表单(form-data)中上传文件
  • auth: Basic Auth授权,数组格式 auth=(user,password)
  • timeout: 超时时间(防止请求一直没有响应,最长等待时间),数字格式,单位为秒

 响应解析

  • res.status_code: 响应的HTTP状态码
  • res.reason: 响应的状态码含义
  • req.text:响应的文本格式,按req.encoding解码
  • req.content: 响应的二进制格式
  • req.encoding: 解码格式,可以通过修改req.encoding='utf-8'来解决一部分中文乱码问题
  • req.apparent_encoding:真实编码,由chardet库提供的明显编码
  • req.json(): (注意,有括号),响应的json对象(字典)格式,慎用!如果响应文本不是合法的json文本,或报错
  • req.headers: 响应头
  • req.cookies: 响应的cookieJar对象,可以通过req.cookies.get(key)来获取响应cookies中某个key对应的值

转载于:https://www.cnblogs.com/zhouxuyang1/p/11418897.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值