当前位置: 首页 > article >正文

十六: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}')

至少 下载下来东西了  


http://www.kler.cn/a/371894.html

相关文章:

  • 从可逆计算看低代码
  • C语言中的野指针以及避免野指针的常用方式
  • (蓝桥杯C/C++)——常用库函数
  • python爬虫抓取豆瓣数据教程
  • EXPLAIN 针对性优化 SQL 查询
  • 网络编程_day6
  • 装饰器怎样实现
  • LeetCode --- 420周赛
  • 大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)
  • linux查看系统负载情况
  • STM32--I2C外设
  • Java AQS Semaphore 源码
  • Jenkins面试整理-什么是 Jenkins?
  • kettle8.3 Oracle连接运行一段时间后:Socket read timed out
  • ClickHouse 3节点集群安装
  • 香橙派Orangepi 5plus 配置Hailo-8/Hailo-8L
  • mariadb数据库中文乱码问题
  • 微服务之链路追踪Sleuth+zipkin
  • Linux 上使用 Docker 下载和运行 Redis
  • 智能家居10G雷达感应开关模块,飞睿智能uA级别低功耗、超高灵敏度,瞬间响应快
  • Web3的去中心化社交网络:区块链技术如何改变互动方式
  • 【ArcGISPro】制作简单的ArcGISPro-AI助手
  • HTML入门教程4:HTML属性
  • Android Studio Ladybug升级老项目遇到问题
  • 384.打乱数组
  • 单细胞数据分析(三):单细胞聚类分析