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

news2025/1/12 18:18:08

目录

安装 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}')

至少 下载下来东西了  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QStringList 使用详解

QT开发之路 企业级开发系列文章,主要目标快速学习、完善、提升 相关技能 高效完成企业级项目开发 分享在企业中积累的实用技能和经验。 通过具体的编码过程、代码示例、步骤详解、核心内容和展示的方法解决遇到的实际问题。 转载请附上文章出处与本文链接。 QStrin…

尚硅谷 | Nginx | 学习笔记

尚硅谷 | Nginx | 学习笔记 尚硅谷Nginx教程由浅入深(一套打通丨初学者也可掌握)_哔哩哔哩_bilibili 文章目录 尚硅谷 | Nginx | 学习笔记一、Nginx相关概念1.Nginx是什么2.正向代理和反向代理正向代理反向代理 3.负载均衡和动静分离负载均衡动静分离 二…

AtCoder ABC376A-D题解

个人觉得 ABC 变得越来越难了/kk/kk/kk 比赛链接:ABC376 Problem A: Code #include <bits/stdc.h> using namespace std; int main(){int N,C;cin>>N>>C;for(int i1;i<N;i)cin>>T[i];int ans0,pre-1e5;for(int i1;i<N;i){if(T[i]-pre>C){…

后台管理系统的通用权限解决方案(五)SpringBoot整合hibernate-validator实现表单校验

1 hibernate-validator介绍 早期的网站&#xff0c;用户输入一个邮箱地址&#xff0c;需要将邮箱地址发送到服务端&#xff0c;服务端进行校验&#xff0c;校验成功后&#xff0c;给前端一个响应。 有了JavaScript后&#xff0c;校验工作可以放在前端去执行。那么为什么还需要…

【02基础】- RabbitMQ基础

目录 2- RabbitMQ2-1 介绍和安装安装 2-2 RabbitMQ 快速入门2-3 RabbitMQ 数据隔离 3- Java客户端3-1 快速入门AMQP快速入门&#x1f4d1;小结&#xff1a;SpringAMQP如何收发消息&#xff1f; 3-2 WorkQueues 任务模型案例-使用 WorkQueue 单队列绑定多消费者&#x1f4d1;小结…

uniapp开发【选择地址-省市区功能】,直接套用即可

一、效果展示 二、代码 <template><view><view class="user_info"><view class="item"

.NET Core WebApi第3讲:第一个WebApi项目、WebApi开发三种模型

一、.NEt Core 1、运行模板项目 1&#xff09;仍然有controllers&#xff0c;说明WebApi是基于MVC模式的&#xff0c;只是对比之下这里没有MVC中的views。 因为WebApi只会向前台发送数据&#xff0c;不会向前台发送HTML页面。 2、验证模板项目的api 1&#xff09;法1&#xf…

地球上的中国:世界地图概览

目录 地理空间数据可视化描绘地图导入Python包参数设置true自定义分段设置分段数量 绘制世界地图总结 地理空间数据可视化 地理空间数据可视化涉及将含有地理定位信息的数据转换成图形或影像形式&#xff0c;以此增强数据的理解与解析。这一方法广泛应用于诸如都市策划、生态守…

一文详解大模型推理:从基础知识到 vLLM

推理 本章正在建设中 - 一些部分已经完成&#xff0c;一些刚刚开始&#xff0c;还有许多尚未开始&#xff0c;但已经有足够多的有用部分完成&#xff0c;使其值得阅读。 术语表 CLA: 跨层注意力&#xff08;Cross-Layer Attention&#xff09;FHE: 全同态加密&#xff08;Fu…

【语音转文本新体验】Windows部署Whisper Web结合内网穿透轻松远程转录——“cpolar内网穿透”

文章目录 前言1.本地部署Whisper Web1.1 安装git1.2 安装Node.js1.3 运行项目 2. Whisper Web使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 公网访问测试6. 配置固定公网地址 前言 OpenAI开源的 Whisper 语音转文本模型效果都说还不错&#xff0c;今天就给大家推荐 GitHub…

深入理解HTTPS协议原理

目录 加密 对称加密 非对称加密 中间人攻击 证书 验证证书合法性 HTTPS工作原理 常见问题 HTTPS即安全超文本传输协议&#xff0c;是互联网上进行安全通信的一种重要协议。它是在HTTP的基础上增加了安全性的要求&#xff0c;通过SSL或TLS协议对数据进行加密&#xff0c…

省、市、县夜间灯光数据大全(Excel+shp数据)(1992-2022年)

夜间灯光数据&#xff0c;作为一种遥感数据&#xff0c;能够为我们揭示夜晚地球的灯光和火光分布情况。这种数据不仅能够反映人类活动的空间分布&#xff0c;还能作为经济发展、社会进步和环境变化的一个量化指标。通过分析夜间灯光的亮度和分布&#xff0c;我们可以对一个地区…

Spring三级缓存解决循环依赖?构造方法的循环依赖问题解决(原理、详细过程、面试题)

目录 1.什么是循环依赖 2.Spring三级缓存介绍 3.二级缓存可以解决循环依赖吗&#xff1f; 3.1 二级缓存解决循环依赖过程详解 4. 为什么还需要三级缓存呢&#xff1f;/Spring三级缓存的作用&#xff1f; 4.1三级缓存解决循环依赖过程详解 4.2 为什么二级缓存就不能解决代…

如何在算家云搭建LongWriter(长文创作)

一、 LongWriter 简介 在自然语言处理领域&#xff0c;随着对长文本处理需求的不断增加&#xff0c;能够高效生成长文本的语言模型变得至关重要。LongWriter 的推出正是为了打破传统语言模型在生成超长文本时的限制。LongWriter-glm4-9b 是基于glm-4-9b进行训练的&#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…

【Oracle实验】字段为空的,无法通过排除判断

Oracle相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 1.场景描述 需求&#xff1a;查询不是某个机构的数据。 同事SQL&#xff1a;where substr(bank_code,1,9) not in(014009001)&#xff1b; 看SQL似乎没什么问题&#xff0c;分析…

【SpringCloud】07-分布式事务与Seata

1. 分布式事务 2. Seata 3. 安装seata 配置数据库 CREATE DATABASE IF NOT EXISTS seata /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTIONN */; USE seata;------------------------------- The script used when storeM…

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

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMinMoves(vector<int> &machines) {int tot accumulate(machines.begin(), machines.end(), 0);int n machines.size();if (tot % n) {return -1;}int avg tot / n;int ans 0, sum 0;for (…

为什么架构设计禁止IP直连?

什么是IP直连&#xff1f; IP直连指应用程序直接在代码中硬编码IP地址&#xff0c;比如&#xff0c;连接mysql数据库的数据库链接&#xff0c;如下的定义方式&#xff0c;就属于IP直连。 这种写法在开发环境中很常见&#xff0c;但是&#xff0c;在正式生产环境中&#xff0c;…

算法的学习笔记—滑动窗口的最大值(牛客JZ59)

&#x1f600;前言 滑动窗口问题是常见的算法题型&#xff0c;主要考察如何在限定窗口内找到特定值&#xff0c;比如最大值、最小值等。在这篇文章中&#xff0c;我们将深入分析“滑动窗口的最大值”问题的求解方法&#xff0c;并提供一种实现思路&#xff0c;以帮助大家更好地…