python发送http请求

前言

在python中,发送http大多使用requests来发送,因为他使用起来非常方便,代码非常简洁。

快速入门

1.发送get请求

# 导入requests包
import requests

url = "http://www.tuling123.com/openapi/api"
myParams = {"key":"username","info":"plusroax"} # 字典格式,推荐使用,它会自动帮你按照k-v拼接url
res = requests.get(url=url, params=myParams)

print('url:',res.request.url)# 查看发送的url
print("response:",res.text)  # 返回请求结果

可以看到,他帮我们自动拼接url地址了

2.发送post请求

# 导入requests包
import requests

url = "http://httpbin.org/post"
data = {"name": "plusroax","age": 18} # Post请求发送的数据,字典格式
res = requests.post(url=url, data = data)#这里传入的data,是body里面的数据。params是拼接url时的参数

print("发送的body:",res.request.body)
print("response返回结果:",res.text)

 

常用请求参数:

requests.get(url=url, params=myParams),之前我们用到了url和params参数,下面介绍一下其他参数
 

  • url: url地址
  • params:url参数,字典格式,使用此参数会自动拼接到url地址中
  • data: 请求body中的数据,字典或字符串格式
  • headers: 请求头信息,字典格式
  • cookies: 字典格式,可以通过携带cookies绕过登录
  • files: 字典格式,用于混合表单(form-data)中上传文件
  • timeout: 超时时间(防止请求一直没有响应,最长等待时间),数字格式,单位为秒

常用返回结果:

  • res.status_code: HTTP状态码,如200
  • res.reason: HTTP状态码含义,如 OK
  • res.headers: HTTP响应头信息
  • res.text:获取返回结果,按req.encoding解码
  • res.encoding: 获取当前使用的编码格式
  • res.apparent_encoding:文本真正的编码格式
  • res.cookies: 响应的cookieJar对象,可以通过req.cookies.get(key)来获取响应cookies中某个key对应的值
  • res.json(): (注意,有括号),响应的json对象(字典)格式,慎用!如果响应文本不是合法的json文本,或报错

乱码问题:

如果当前使用的编码格式(res.encoding)和真正的编码格式(res.apparent_encoding)不一样,就会出现乱码。

原因在于requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题.

这么一来,我原本传入的是utf-8编码,但是响应头没有传Content-Type字段,默认用了IOS-8859编码,解析的时候按照IOS-8859-1肯定乱码,与原本编码不符。

解决办法:

用真实编码去解析当前文本

res.encoding=res.apparent_encoding

 

  • 9
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值