python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头

1. request模块简介与安装
request在爬虫中最重要的就是帮助我们发送请求
request基本使用
参考网址:https://requests.readthedocs.io/projects/cn/zh-cn/latest/
2. 核心特性:

  • 简单易用的API无需手动处理连接、编码或者复杂的参数设置,一行代码即可发送请求
  • 支持所有的HTTP方法GET、post、put、delete、head、options等
  • 自动处理多种功能
  • 丰富的请求配置支持设置请求头
    3. pip安装requests
    终端命令: pip install requests(如果出现pip不是内部或者外部命令,也不是可运行的程序或者批处理文件,原因是没有配置pip的环境变量)
    安装之后检查一下: pip show requests
    执行后的结果:在这里插入图片描述
    这里可以看到requests的版本是2.32.4
  1. 发送get请求
import requests

# 执行爬虫:爬虫流程
# 1.准备目标网址的url地址
# 2.发起获取网页返回结果
# 3.处理响应结果
# 4.储存数据

# url地址
url = 'https://www.baidu.com'

# 向url发送get请求
response = requests.get(url)

# 打印响应结果,response.text一般能够根据响应自动解码
# print(response.text)
#
response.encoding = 'utf-8'
# 获取网页源码,为了能够正确解码网页内容,可以尝试以下几种方式:
# response.content.decode()
# response.content.decode('GBK')
# response.text
# 推荐:最稳妥的方式是使用response.content.decode(),因为它能够通过指定编码的方式来确保正确解码
# print(response.text)

try:
    content = response.content.decode()
except UnicodeDecodeError:
    try:
        content = response.content.decode('gbk')
    except UnicodeDecodeError:
        content = response.text

print(content)
  1. 响应数据的获取
import requests

# url地址
url = 'https://www.baidu.com'

# 向url发送get请求
response = requests.get(url)

# 3.打印结果
print("---------------请求地址------------")
print(response.url)
print("---------------响应体str类型结果------------")
print(response.text)
print("---------------响应头------------")
print(response.headers)
print("---------------响应状态码------------")
print(response.status_code)
print("---------------响应对应的请求头------------")
print(response.request.headers)
print("---------------响应体bytes类型------------")
print(response.content)
print("---------------响应对应请求的cookie------------")
print(response.request.headers.get('cookies'))
print("---------------响应的cookie,经过了set cookie的动作------------")
print(response.cookies)
print("---------------响应对应请求的url------------")
print(response.url)


  1. 获取网页源码的通用方式
import requests

# url地址
url = 'https://www.baidu.com'

#设置请求头(伪装,请求头一般都是遵循字典格式编写,爬虫时候一般它用的什么请求头,我们伪装也用相同的请求头即可)
# 反爬伪装可以通过调整另外的浏览器请求头重新发送信息
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}

# 向url发送get请求
response = requests.get(url, headers=headers)

# 3.打印结果
# print("---------------请求地址------------")
# print(response.url)
# print("---------------响应体str类型结果------------")
# print(response.text)
# print("---------------响应头------------")
# print(response.headers)
# print("---------------响应状态码------------")
# print(response.status_code)
# print("---------------响应对应的请求头------------")
# print(response.request.headers)
# print("---------------响应体bytes类型------------")
# print(response.content)
# print("---------------响应对应请求的cookie------------")
# print(response.request.headers.get('cookies'))
# print("---------------响应的cookie,经过了set cookie的动作------------")
# print(response.cookies)
# print("---------------响应对应请求的url------------")
# print(response.url)
print(response.content.decode())

# 4.保存请求的结果(持久化存储)
# 持久化存储
with open('./baidu.html', 'w', encoding='utf-8') as f:
    f.write(response.text)
print("爬取完成!!")

持久化存储后的结果
在这里插入图片描述
这里使用response.text属性的原因:
① text解码后的字符串是String类型,request会根据响应头中的编码例如utf-8自动解码,所以可以自动获取解码后的内容,适合写入文本操作,已经是解码好的,更方便,如果使用response.context比如要先手动解码,会更加麻烦一点
② 如果使用使用response.context需要解码,而且需要确认具体是解码为那种

  1. response的其他属性
  2. 携带http请求头
  3. 图片下载案例
import requests

# url图片地址
url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'

#设置请求头(伪装,请求头一般都是遵循字典格式编写,爬虫时候一般它用的什么请求头,我们伪装也用相同的请求头即可)
# 反爬伪装可以通过调整另外的浏览器请求头重新发送信息
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}

# 向url发送get请求
response = requests.get(url, headers=headers)

# 获取页面源码对应的图片
with open('./baiduImage.png', 'wb') as f:
    f.write(response.content)

执行结果
在这里插入图片描述
这里和上面的源代码的区别之一,就是response.content因为是图片内容,不是text的格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值