十六:Python学习笔记-- 爬虫(2)requests 模块详解

目录

安装 requests 模块

基本请求方法

GET 请求

POST 请求

PUT 请求

DELETE 请求

添加请求头:

处理查询参数:

文件上传:

常见响应状态码

访问超时

cookie的查询和设置

        查询 Cookies

        设置 Cookies

设置爬虫代理

小试牛刀 


安装 requests 模块

你可以使用 pip 来安装 requests。在终端或命令提示符中输入以下命令:

pip install requests

基本请求方法

requests 模块支持多种 HTTP 请求方法,以下是常用的几种:

GET 请求

用于从服务器获取数据。

import requests

response = requests.get('https://zbr/data')
print(response.status_code)  # 状态码
print(response.json())        # 返回的 JSON 数据

POST 请求

用于向服务器发送数据。

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://zbr/data', json=data)
print(response.status_code)
print(response.json())

PUT 请求

用于更新资源。

import requests

data = {'key1': 'new_value'}
response = requests.put('https://zbr/data/1', json=data)
print(response.status_code)

DELETE 请求

用于删除资源。

import requests

response = requests.delete('https://zbr/data/1')
print(response.status_code)

添加请求头

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://zbr/data', headers=headers)

处理查询参数

params = {'param1': 'value1', 'param2': 'value2'}
response = requests.get('https://zbr/data', params=params)

文件上传

files = {'file': open('test.txt', 'rb')}
response = requests.post('https:/zbr/upload', files=files)

常见响应状态码

  • 200 OK

    • 请求成功,服务器返回所请求的数据。
  • 201 Created

    • 请求成功,资源被创建,通常用于 POST 请求。
  • 204 No Content

    • 请求成功,但没有返回内容,常用于 DELETE 请求。
  • 400 Bad Request

    • 服务器无法理解请求,通常是因为请求参数错误。
  • 401 Unauthorized

    • 请求需要用户验证,通常是因为缺少或无效的认证凭据。
  • 403 Forbidden

    • 服务器拒绝请求,即使已验证用户,通常是权限问题。
  • 404 Not Found

    • 请求的资源在服务器上未找到,常见于无效的 URL。
  • 500 Internal Server Error

    • 服务器遇到意外情况,导致无法完成请求。
  • 503 Service Unavailable

    • 服务器当前无法处理请求,可能是由于过载或维护。

访问超时

        在使用 requests 模块时,可以设置请求的超时时间,以防止请求因网络问题而长时间阻塞。可以通过 timeout 参数设置超时:

import requests

try:
    response = requests.get('https://zbr/data', timeout=5)  # 设置超时为5秒
    response.raise_for_status()  # 检查请求是否成功
except requests.exceptions.Timeout:
    print('请求超时!')
except requests.exceptions.HTTPError as err:
    print(f'HTTP错误:{err}')
except Exception as err:
    print(f'其他错误:{err}')

cookie的查询和设置

        查询 Cookies

        在发送请求后,你可以通过 response.cookies 属性来访问服务器返回的 cookies:

import requests

# 发送请求
response = requests.get('https://httpbin.org/cookies/set?name=value')

# 查询 cookies
cookies = response.cookies
for cookie in cookies:
    print(f'{cookie.name}: {cookie.value}')

        设置 Cookies

        在发送请求时,可以通过 cookies 参数来设置 cookies

import requests

# 创建一个字典,包含要设置的 cookies
cookies = {'name': 'value', 'session_id': 'abc123'}

# 发送请求并设置 cookies
response = requests.get('https://httpbin.org/cookies', cookies=cookies)

# 打印返回的 cookies
print(response.json())

设置爬虫代理

在使用 requests 模块进行网页爬虫时,设置代理可以帮助你隐藏真实 IP 地址,避免被网站封禁。

就是找到代理服务商 买一下资源 把信息填到proxies  里面去

import requests

# 设置代理
proxies = {
    'http': 'http://your_http_proxy:port',
    'https': 'http://your_https_proxy:port',
}
# 身份验证写法
proxies = {
    'http': 'http://username:password@your_http_proxy:port',
    'https': 'http://username:password@your_https_proxy:port',
}

# 要发送的数据
data = {'key': 'value'}

# 发送 POST 请求
response = requests.post('https://httpbin.org/post', data=data, proxies=proxies)

# 打印响应内容
print(response.json())

小试牛刀 

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/85.0.4183.121 Safari/537.36'
}
try:
    # 发送 GET 请求
    response = requests.get(url, headers=headers)

    # 检查请求是否成功
    response.raise_for_status()

    # 保存为 HTML 文件
    with open('baidu.html', 'w', encoding='utf-8') as file:
        file.write(response.text)

    print('网页已成功保存为 baidu.html')

except requests.exceptions.RequestException as e:
    print(f'请求出错: {e}')

至少 下载下来东西了  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/904328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1Panel应用商店开源软件累计下载突破200万次!

2024年10月23日,1Panel应用商店内开源软件累计下载突破200万次。 1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。 为…

C语言 | Leetcode C语言题解之第517题超级洗衣机

题目&#xff1a; 题解&#xff1a; int findMinMoves(int* machines, int machinesSize){int sum0;for(int i0;i<machinesSize;i){summachines[i];}if(sum%machinesSize!0){return -1;}int psum/machinesSize;int ans0;int cur0;for(int i0;i<machinesSize;i){cur(mac…

JavaSE笔记3】面向对象高级

目录 拓1&#xff1a;私有方法的优点 拓2&#xff1a;静态方法的优点 拓3&#xff1a;类的五大成分 拓4&#xff1a;硬编码和软编码 一、static 1. 概念 2. 成员变量在内存中执行原理 3. 类变量(静态变量)的使用场景 4. 两种成员变量 5. 两种成员方法 6. 类方法的使用场景 7.…

动态规划 —— 路径问题-礼物的最大价值

1. 剑指offer-JZ47-路径问题-礼物的最大价值 题目链接&#xff1a; 礼物的最大价值_牛客题霸_牛客网https://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134?tpId265&tqId39288&ru/exam/oj 2. 算法原理 状态表示&#xff1a;以莫一个位置位置为结尾 d…

Unity自定义数组在Inspector窗口的显示方式

了解 单行高度:EditorGUIUtility.singleLineHeight获取 PropertyField 控件所需的高度:EditorGUI.GetPropertyHeight属性是否在Inspector窗口展开&#xff1a;SerializedProperty.isExpanded可重新排序列表类&#xff1a;ReorderableList绘制纯色矩形&#xff1a;EditorGUI.Dr…

聊聊Web3D 发展趋势

随着 Web 技术的不断演进&#xff0c;Web3D 正逐渐成为各行业数字化的重要方向。Web3D 是指在网页中展示 3D 内容的技术集合。近年来&#xff0c;由于 WebGL、WebGPU 等技术的发展&#xff0c;3D 内容已经能够直接在浏览器中渲染&#xff0c;为用户提供更加沉浸、互动的体验。以…

【AIGC】ChatGPT应用之道:如何打破『专家幻象』,提升AI协作质量

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;ChatGPT的实际能力用户对ChatGPT的常见误解超越误解&#xff0c;合理设定期望总结 &#x1f4af;超越“专家”幻想设定合理的期望总结 &#x1f4af;提升人工智能协作质量…

Web3的去中心化社交网络:区块链技术如何改变互动方式

随着互联网技术的不断进步&#xff0c;社交网络正在经历一场深刻的变革。Web3&#xff0c;作为新一代互联网技术的代表&#xff0c;正通过区块链和去中心化理念改变着我们与他人互动的方式。传统的社交网络通常由大型公司控制&#xff0c;用户数据的集中化管理和隐私问题备受关…

计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法

文章目录 IPv4IPv4的表示方法IPv4的编址方法分类编址A类地址B类地址C类地址可指派的地址数量一般不使用的特殊IPv4地址 划分子网编址子网掩码默认子网掩码 无分类编址方法地址掩码斜线记法无分类域间路由选择 CIDR IPv4 IPv4&#xff08;Internet Protocol version 4&#xff…

Amcor 如何借助 Liquid UI 实现SAP PM可靠性

背景介绍 安姆科是塑料行业的全球领军企业&#xff0c;该企业认识到 SAP 工厂维护&#xff08;SAP PM&#xff09;对于确保高效的维护管理的重要性。 在诸如制造业等高度依赖机械设备的行业中&#xff0c;SAP PM是一种通过数据驱动决策来最大限度减少停机时间、降低间接成本、…

玩转Docker | 使用Docker部署捕鱼网页小游戏

玩转Docker | 使用Docker部署捕鱼网页小游戏 一、项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署捕鱼网页小游戏下载镜像创建容器检查容器状态下载项目内容查看服务监听端口安全设置四、访问捕鱼网页小游戏五、总结一、项目介绍…

没有对象来和我手撕红黑树吧

1. 红黑树的介绍 红黑树也是一种自平衡的二叉搜索树&#xff0c;在每一个节点增加了一个存储位来表示节点的颜色&#xff0c;可以是红色也可以是黑色&#xff0c;通过约束颜色来维持树的平衡&#xff0c;具有以下的性质&#xff1a; 每个节点不是红色就是黑色根节点为黑色如果…

怎么实现电脑控制100台手机,苹果手机群控系统不用越狱实现新突破

今天来给大家介绍一款软件——手机群控。 什么是手机群控&#xff1f;就是将多台手机同时连接至一台电脑&#xff0c;集中控制管理。 对于苹果iOS免越狱中控&#xff0c;此前一直是个难题。 毕竟iOS系统封闭性极强&#xff0c;且苹果官方限制了USB的传输类型&#xff0c;只允…

【网络面试篇】TCP与UDP类

目录 一、综述 1. TCP与UDP的概念 2. 特点 3. 区别 4. 对应的使用场景 二、补充 1. 基础概念 &#xff08;1&#xff09;面向连接 &#xff08;2&#xff09;可靠的 &#xff08;3&#xff09;字节流 2. 相关问题 &#xff08;1&#xff09;TCP 和 UDP 可以同时绑定…

web自动化测试平台开发之核心执行器

web自动化测试平台开发之核心执行器 一、如何从自动化框架到核心执行器二、核心执行器框架逻辑梳理三、核心执行器利用命令驱动执行 一、如何从自动化框架到核心执行器 脚本:底层用了三个内容:pythonpytestselenium&#xff0c;线性脚本&#xff0c;只是单纯的把功能测试用例转…

AI自媒体变现路径大盘点!建议收藏!

当下的我做为一人公司或者超级个体为目标的创业模式&#xff0c;无论是在写作、图文和短视频输出方面&#xff0c;我都是运用了N个AI工具来提升我的生产力。 这种创业模式就是一个人N个AI的模式&#xff0c;我们可以通过AI工具做提效来赚取差价&#xff0c;以时间复利来累计财…

Boost电路双闭环控制MATLAB仿真

一、Boost电路电流内环控制MATLAB仿真模型 1.MATLAB仿真模型 1.1.仿真模型图 因为要使用电流内环控制&#xff0c;相比较于开环控制中直接给定MOS开关的占空比&#xff0c;这里通过把电路的平均电流和一电流基准值相比较来控制MOS开关的占空比&#xff0c;因此称为闭环控制。…

centos7 zabbix监控nginx的pv和uv和status_code

zabbix监控nginx的pv&#xff1a; pv)cat /var/log/nginx/access.log|awk {print $1}|wc -l;;zabbix-get验证&#xff1a; [rootbogon ~]# zabbix_get -s 192.168.253.231 -k pv_uv[pv] 100zabbix监控nginx的uv uv)cat /var/log/nginx/access.log|awk {print $1}|uniq -c | w…

分布式系统理论基础:Raft、Zab

目录 引言RaftZabPaxos、Raft、Zab再比较小结 该系列博文会告诉你什么是分布式系统&#xff0c;这对后端工程师来说是很重要的一门学问&#xff0c;我们会逐步了解分布式理论中的基本概念&#xff0c;常见算法、以及一些较为复杂的分布式原理&#xff0c;同时也需要进一步了解…

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程

Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程 Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程前言 OpenCV概述核心功能优势特点应用领域安装与使用 OpenCV_contrib概述核心功能具体模块 安装与使用一、准备工作二、下载OpenCV和OpenCV_contrib三、编译和安装OpenCV四、…