Python requests库

目录

简介

安装requests库

导入requests库

目标请求 

请求方法

get请求

 post请求

其他请求 

请求参数

请求结果

状态码

结果的数据形式

关于请求结果的编码问题


简介

requests库是一个第三方库,主要用于爬虫请求

作用和python自带urllib库类似,用于请求目标地址数据,更加方便

本文档内容以入门、实用、查漏补缺为主,避免过于全面造成冗长

 从小实例入手:

import requests

headers = {'User-Agent': 'Mozilla/5.……'}
urls = 'http://www.baidu.com'

res = requests.get(url=urls, headers=headers, allow_redirects=False, timeout=10)
print(res.status_code)
html = res.text
print(type(html))
html = res.content
print(type(html))

 下面来理解这个实例。

安装requests库

windows命令行下,按如下命令安装一次即可 

pip install requests

导入requests库

import requests

目标请求 

请求方法

get请求

例中使用的是最常用、最基础的get请求,目标地址的网页信息被赋给res对象。所以,请求的一切响应、结果都藏在res对象中。得到正确的结果,算是成功了一大步。

 post请求

res = requests.post('http://httpbin.org/post', data = {'key':'value'})

post请求是第二常用请求,特点为带data关键信息。可理解为进屋敲门时自报家门,报错时,屋里的小羊自然不会为大灰狼开门。(对应get请求为开门就进,想拿什么拿什么)

其他请求 

r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')

 上面是还未遇到过的各种请求,放此不表。

请求参数

url:目标地址字符串;

headers:请求头,字典形式。常规会放入一个或多个User-Agent,想通过代码爬虫至少要伪装成在操作系统中的浏览器在请求数据吧。

allow_redirects:允许_重定向,所以默认是True自动处理,但这样会得不到新的url。存在这种情况时,应改为False,通过302响应结果,找到新的url。关于重定向的细节说明

timeout:常用,该时间内等待响应,单位秒,超时停止请求。注意timeout仅指该时间内应答有反馈即可,非所有请求的数据下载至本地。可理解为服务器接电话即可,不管什么时候挂电话。

请求结果

各种请求结果的形式、内容非常丰富,只挑常用的说明。

状态码

 Status Code代表请求过程的状态说明,数据类型是<class 'int'>,状态码主要用于在判定某一状态下,进行特定的程序处理。

常见如:200:正确响应;301:永久重定向;302:临时重定向;404:服务器无相关资源或无理由拒绝等。更多类型说明。

结果的数据形式

这是服务器反馈给我们的各种信息形式,爬的就是它们。常用的包括两种。

res.text:响应结果的字符串形式,便于后期通过正则等工具进行数据处理。

html = res.text
print(html)
print(type(html))

运行结果:

<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

<class 'str'>

 res.content:响应结果的字节形式。如果请求的地址是一个图片链接,就应以字节形式存储数据。如下结果中的b'……'内容。当然,实际内容长度会比下图长的多。

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00'

关于请求结果的编码问题

requests库根据请求返回的内容,自动判断选择一种解码方式来解码展现出来(数据传输的底层逻辑是1和0的形式,所以会有编码、解码过程)。可以查看解码的效果,如果发现有乱码,就需要指定其他的编码方式,常用的是utf-8。

看实例:

import requests
res = requests.get('http://www.baidu.com')
print(res.text)             #requests库会自动对请求结果进行编码
print(res.encoding)         #查看自动选择的编码方式
res.encoding = 'utf-8'      #通过赋值指定编码方式utf-8
print(res.text)             #查看指定编码后的解码效果
print(res.encoding)         #查看指定的解码方式

分析过程:

第一个print(res.text),输出结果,显示有乱码,见下图。通过print(res.encoding)查看当前解码方式是ISO-8859-1

通过指定为utf-8,重新查看解码结果正常无乱码,如图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值