学习日记—requests库知识总结


活动地址:优快云21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰!

一、浅入requests

1、简单介绍requests

         requests模块是一个http模块,主要用于发送请求获取响应,此模块有很多的可代替模块,例如urlib模块,但是requests模块代码简洁易懂,编写的爬虫代码会更少,所以requests模块在爬虫中备受欢迎。

2、requests模块的安装

        requests模块是第三方库,需要在cmd命令框或者pycharm的终端窗口运行pip install requests即可。

 

二、requests库的使用

1、常用属性或方法

方法/属性说明
response=requests.get(url)发送请求获取响应对象(常用的get请求方式)
response=requests.post(url)发送请求获取响应对象(post请求方式)
response.url响应的url(有时候响应的url和请求的url并不一致)

response.status_code

响应状态码,如200,404,500
response.request.headers响应对应的请求头
response.headers响应头
response.request.cookies响应对应请求的cookie,返回cookieJar类型
response.cookies响应的cookie(经过了set-cookie动作,返回cookieJar类型)
response.json()自动将json字符串类型的响应内容转化为python对象(字典或者列表)
response.text返回响应内容,str类型
response.content返回响应内容,bytes类型

案例:通过requests向百度首页发送请求,获取页面源代码

import requests

# 目标网址
url = "http://www.baidu.com/"

# 发送请求获取响应
response = requests.get(url)

# 查看响应对象的类型
print(type(response))
# 查看响应状态码
print(response.status_code)
# 查看响应内容的类型
print(type(response.text))
# 查看cookies
print(response.cookies)
# 查看响应的内容
print(response.text)

运行结果: 

2、response.text和response.content的区别: 

  response.text

response.content
类型strbytes
解码类型

requests模块自动根据http头部对响应的编码做出有根据的推测,推测的文本编码。

没有指定,执行挑选

        通过对response.content进行decode,来解决中文乱码:

        response.content.decode():默认utf-8

        response.content.decode('GBK')

        常见的编码字符集:

                utf-8

                gbk

                gb2312

                asci

                iso-8859-1

案例:

import requests

# 目标网址
url = "http://www.baidu.com/"

# 发送请求获取响应
response = requests.get(url)

# 手动设置编码格式
response.encoding = 'utf8'
# 打印源码的str类型数据
print(response.text)

# response.content是存储的bytes类型的响应数据,进行decode操作
print(response.content.decode('utf-8'))

运行结果:

3、发送带headers参数请求

        获取headers:

                打开浏览器—右键—检查—刷新网页—点击Network找到对应网址,找到User-Agent并且复制下来

         headers参数接受字典形式的请求头,请求头字段名作为key,字段对应的值作为value

案例:

import requests

# 目标网址
url = "http://www.baidu.com/"

# 构建请求头字典,最重要的就是User-Agent
# 如果需要其他请求头,就在headers字典中加上
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/103'
}

# 发送请求获取响应
response = requests.get(url,headers=headers)

print(response.text)

运行结果:

 4、发送带参数的请求

        如何删除网页中多余的参数?

        通过一个一个删除参数并刷新得到

        ①网址中带参数

import requests

# 目标网址
url = "https://www.baidu.com/s?wd=python"

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

# 发送请求获取响应
response = requests.get(url,headers=headers)

print(response.text)

        ②通过params构造参数字典

import requests

# 目标网址
url = "https://www.baidu.com/s?"

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

# 请求参数是一个字典
kw = {'wd': 'python'}

# 发送请求的时候设置参数字典,获取响应
response = requests.get(url, headers=headers, params=kw)

print(response.text)

5、在headers参数中携带cookie

        网站经常利用请求头中的Cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加Cookie,模拟普通用户的请求。Cookie具有时效性过一段时间需要更换。

        cookie查找与添加的方式和发送带headers参数请求一样。

6、超时参数timeout的使用

        在平时网.上冲浪的过程中,我们经常会遇到网络波动,这个时候,一个请求等了很久可能任然没有结果。在爬虫中,一个请求很久没有结果,就会让整个项目的效率变得非常低,这个时候我们就需要对请求进行强制要求,让他必须在特定的时间内返回结果,否则就报错。

        使用方法:

response = requests.get(ur1, timeout=3) # 发送请求后3秒钟内返回响应,否则异常

7、proxies代理参数的使用

        为了让服务器以为不是同一个客户端在请求;为了防止频繁向一个域名发送请求被封ip,所以我们需要使用代理ip

        使用:

response = requests.get(url, proxies=proxies)

proxies是字典形式

proxies = {
    "http": "http://12.34.5679:9527",
    "https": "https://12.34.5679:9527",
}

如果proxies字典中包含多个键值对,发送请求时按照url地址的协议来选择使用对应的代理ip

8、发送post请求

response = requests.post(url, data) # data参数接收一个字典

如何找到data表单?

        找到对应的请求,往下滚动找到Form data表单

 代码中构造data字典

import requests

url = "https://fanyi.baidu.com/"

data = {
    'query': '爱'
}
response = requests.post(url)
print(response.text)

运行结果:

以上便是小y的学习笔记,小y希望和大家共同进步!

欢迎点赞+收藏+关注!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小 y 同 学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值