Python Request get post 代理 基本使用

news2024/10/7 14:33:05

Python Request get post 代理 常用示例


文章目录

  • Python Request get post 代理 常用示例
  • 一、Pip install requests
  • 二、Requests 请求时携带的常用参数
      • 1、参数说明
      • 2、headers
      • 3、requests 常用参数:url、headers、proxies、verify、timeout
  • 三、Requests Get Post
      • 1、Get
      • 2、Post
  • 四、Requests 常用代码
      • 1、常用的请求代码
      • 2、requests 文件下载
      • 3、response 常用属性介绍
  • 五、Requests 异常处理
      • 1.常用的异常处理
  • 总结



以下是本篇文章正文内容,下面案例可供参考

一、Pip install requests

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

二、Requests 请求时携带的常用参数

1、参数说明

参数说明
url需要请求的目标网站链接
headers字典,HTTP定制头,最基本的身份伪装正常情况都会用
params字典或字节序列,作为参数增加到url中
data字典,字节序列或文件对象,作为request的内容
jsonJSON格式的数据,作为request的内容
cookies字典或CookieJar, request中的cookie,常被网站用于身份校验
auth元组,支持HTTp认证功能
files字典类型,传输文件
timeoutint类型 设定超时时间,秒为单位
proxies字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects重定向开关,默认为True
stream获取内容立即下载开关,默认为True
verify认证SSL证书开关,默认为True,使用代理时设置为Flase

2、headers

    def get_headers():
        user_gent = [
            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/'
            '537.36',
            "MQQBrowser/25 (Linux; U; 2.3.3; zh-cn; HTC Desire S Build/GRI40;480*800)",
            "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
            "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; OMNIA7)",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; XBLWP7; ZuneWP7)",
            "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
            "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0",
            "Mozilla/4.0 (compatible; MSIE 60; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
            "Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.9.168 Version/11.50",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)"
        ]
        headers = {
            'User-Agent': user_gent[random.randint(0, len(user_gent) - 1)],
        }
        return headers

3、requests 常用参数:url、headers、proxies、verify、timeout

url = "https://www.baidu.com/"  # 需要请求的链接
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}  # headers = get_headers()
proxies = { 'http': f'http://{ip}:{port}', 'https': f'http://{ip}:{port}'}  # IP代理 注意http和https都要写
proxies = { 'http': 'http://127.0.0.1:10809','https': 'http://127.0.0.1:10809'}  # 添加系统代理VPN
verify = Flase  # 使用IP代理或VPN时设置为False
timeout = 5  # 每次请求连接超过5秒未响应抛出异常

三、Requests Get Post

1、Get

params={"key":"value"}  # url中传递的参数,效果如:http://www.baidu.com?key=value
response = requests.get(url=url, headers=headers, params=params, proxies=proxies, verify = Flase, timeout=5)

2、Post

parameter = {"key1": "value1", "key2": "value2"}
# requests.post() 方法 json与data说明
# 在chrom浏览器中,数据格式为Form Data,则用data来发送数据,也可根据{}(花括号来区分)
# 在chrom浏览器中,数据格式为Request Payload,则用json来发送数据,也可根据{}(花括号来区分)
response = requests.post(url=url, headers=headers, data=parameter, proxies=proxies, verify = Flase, timeout=5)
files = {"file":open("xxx.txt","rb")}  # 提交文件
response = requests.post(url=url, headers=headers, files=files , proxies=proxies, verify = Flase, timeout=5)

Request Form Data 用 data,Request Form Data 用 data
Request Payload 用jsonRequest Payload 用json
关于文件上传可参考我的这篇博客:requests post 文件上传https://blog.csdn.net/EXIxiaozhou/article/details/126975807

四、Requests 常用代码

1、常用的请求代码

import requests
from requests import exceptions
request_count = 0
while request_count < 3:
    try:
        response = requests.get(url=url, headers=get_headers(), proxies=proxy,  verify = Flase, timeout=5)
        print(f"{xxxx} - 请求成功 {url} IP:{self.proxy}\n", end='')
        break
    except request_exceptions.ConnectTimeout:
        print(f'{xxxx} - 请求失败 ConnectTimeout! IP:{self.proxy}\n', end='')
    except request_exceptions.RequestException:
        print(f'{xxxx} - 请求失败 RequestException! IP:{self.proxy}\n', end='')
    proxy = proxy_obj.get_proxy()  # 关于IP代理的详细内容请关注我的更多博客
    request_count += 1

2、requests 文件下载

import requests
url = "https://xxxx.pdf"
file_path = 'xxxx.pdf'
response = requests.get(url=url, headers=get_headers(), proxies=proxy,  verify = Flase, timeout=5)
with open(file_path , 'wb') as fis:
    for chunk in response.iter_content(chunk_size=1000):
        fis.write(chunk)
        fis.flush()

3、response 常用属性介绍

response.statis_code  # 返回状态,200表示连接成功
response.text  # 响应内容的字符串形式,url链接的内容
response.encoding  # 响应内容的编码方式,header中不存在charset,则认为编码为ISO‐88591
response.apparent_encoding  # 内容中分析出响应内容的编码方式
response.encoding = response.apparent_encoding  # 或=UTF-8
response.content  # 响应内容的二进制形式
response.raise_for_status()  # 不是200则抛出异常
response.cookies()  # 返回一个字典类型的属性
response.json()  # 如果返回的是json则可以根据解析字典的方式提取内容

五、Requests 异常处理

1.常用的异常处理

from requests import exceptions
try:
    # 需要执行的代码
except exceptions.ConnectTimeout:
    print(f'{xxxx} - 请求失败 连接超时! IP:{self.proxy}\n', end='')
except exceptions.RequestException:
    print(f'{xxxx} - 请求失败 请求异常! IP:{self.proxy}\n', end='')
except exceptions.ReadTimeout:
	print(f'{xxxx} - 请求失败 代理读取超时! IP:{self.proxy}\n', end='')
except exceptions.ProxyError:
	print(f'{xxxx} - 请求失败 代理连接不上! IP:{self.proxy}\n', end='')
except exceptions.ConnectionError:
	print(f'{xxxx} - 请求失败 未知的服务器 or 网络环境异常! IP:{self.proxy}\n', end='')
except Exception:
	print(f'{xxxx} - 请求失败 以上未捕捉到的异常!}\n', end='')

总结

以上就是今天要讲的内容,本文仅仅简单介绍了requests的使用,而requests提供了大量能使我们快速便捷请求网络资源的函数和方法,后续有关于requests的常用代码会在这篇博客中持续更新;
Requests 中文文档:https://www.w3cschool.cn/requests2

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

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

相关文章

【Kotlin】基础速览(1):操作符 | 内建类型 | 类型转换 | 字符串模板 | 可变 var 和不可变 val

&#x1f4dc; 本章目录&#xff1a; 0x00 操作符&#xff08;operators&#xff09; 0x01 内建类型&#xff08;Build-in&#xff09; 0x02 类型转换&#xff1a;显式类型转换 0x03 在较长数字中使用下划线 0x04 字符串&#xff08;String&#xff09; 0x05 字符串模板&…

grpc中间件之链路追踪(otel+jaeger)

参考文档 https://github.com/grpc-ecosystem/go-grpc-middleware/blob/main/examples/client/main.go https://github.com/grpc-ecosystem/go-grpc-middleware/blob/main/examples/server/main.go https://github.com/open-telemetry/opentelemetry-go/blob/main/example/jaeg…

基于深度学习的高精度道路瑕疵检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度道路瑕疵&#xff08;裂纹&#xff08;Crack&#xff09;、检查井&#xff08;Manhole&#xff09;、网&#xff08;Net&#xff09;、裂纹块&#xff08;Patch-Crack&#xff09;、网块&#xff08;Patch-Net&#xff09;、坑洼块&#x…

销售易的12年与七个瞬间

导读&#xff1a;企业级没有捷径 12年对一家企业意味着什么&#xff1f; 在消费互联网领域&#xff0c;12年足够长&#xff0c;短短几年内上市的故事过去屡见不鲜。在企业服务的toB领域&#xff0c;产业成熟和企业发展的时间维度被拉长&#xff0c;但故事同样精彩。 2023年7月1…

漫谈大数据时代的个人信息安全(三)——“点赞之交”

大数据时代的个人信息安全系列三&#xff1a;“点赞之交” 1. 点赞之交2. 点赞诈骗3. 个人信息保护小贴士 互联网就像公路&#xff0c;用户使用它&#xff0c;就会留下脚印。 每个人都在无时不刻的产生数据&#xff0c;在消费数据的同时&#xff0c;也在被数据消费。 近日&am…

传智教育成功入选教育部2023年产学合作协同育人项目

传智教育成功入选教育部2023年产学合作协同育人项目 近日&#xff0c;教育部产学合作协同育人项目专家组发布《关于公布教育部产学合作协同育人项目指南通过企业名单&#xff08;2023年5月&#xff09;的通知》&#xff0c;传智教育申报的“教学内容和课程体系改革项目 、师资…

zygote forkSystemServer及systemServer启动

###zygote forkSystemServer方法 通过上一篇文章我们了解到zygote 在ZygoteInit.java类的main方法中调用forkSystemServer方法 UnsupportedAppUsagepublic static void main(String[] argv) {ZygoteServer zygoteServer null;....省略部分代码//根据环境变量(LocalServerSocke…

向量检索增强chatglm生成

背景&#xff1a; 基于chatglm构建agnet&#xff1a;chatglm实现Agent控制 - 知乎 前面一篇文章已经介绍了如何去搭建LLM Agent控制系统&#xff0c;也简单介绍了如何去构建Toolset和构建Action。但是在上篇文章中Toolset其实是基于搜索api构建的&#xff0c;从这篇文章开始后…

C++ stack和queue 模拟实现

stack和queue 模拟实现 模拟栈实现模拟队实现 模拟栈实现 1 栈是一种容器适配器&#xff0c;专门设计用于后进先出的后进先出环境&#xff0c;在这种环境中&#xff0c;元素只从容器的一端插入和提取。 2 栈是作为容器适配器实现的&#xff0c;这些适配器是使用特定容器类的封装…

获取gitlab上项目最近更新时间

获取gitlab上项目列表过程及脚本_xiaodaiwang的博客-CSDN博客使用Python及shell&#xff0c;获取gitlab上项目列表过程及脚本https://blog.csdn.net/xiaodaiwang/article/details/131781316?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rI…

【字符串编码解码问题】

字符串中编码解码问题 1.编码 byte[] getBytes()&#xff1a;使用平台的默认字符集将该String编码为一系列字节&#xff0c;将结果存储到新的字节数组中byte[] getBytes(String charsetName)&#xff1a;使用指定的字符集将该String编码为一系列字节&#xff0c;将结果存储到…

Minecraft 1.20.x Forge模组开发 02.物品栏+方块+物品

我们本次在1.20中添加一个属于自己模组的物品栏、物品和方块。 效果演示 效果演示 效果演示 1.在项目中新建一个int包,用于存放所有注册类,在init包中新建ItemTabInit类: ItemTabInit.java package com.joy187.re8joymod.init

【半监督医学图像分割 2023 CVPR】PatchCL

文章目录 【半监督医学图像分割 2023 CVPR】PatchCL摘要1. 简介2. 相关工作2.1 半监督学习2.2 对比学习 3. 方法3.1 类感知补丁采样3.2 伪标记引导对比损失3.3 总体学习目标3.4 伪标号生成与求精 4. 实验5. 结果 【半监督医学图像分割 2023 CVPR】PatchCL 论文题目&#xff1a;…

行为型模式 - 模板方法模式

概述 在面向对象程序设计过程中&#xff0c;程序员常常会遇到这种情况&#xff1a;设计一个系统时知道了算法所需的关键步骤&#xff0c;而且确定了这些步骤的执行顺序&#xff0c;但某些步骤的具体实现还未知&#xff0c;或者说某些步骤的实现与具体的环境相关。 例如&#…

JAVA ---- 经典排序算法

目录 一. 插入排序 1. 直接插入排序 代码演示 2.希尔排序( 缩小增量排序 ) 二. 选择排序 1.直接选择排序 代码&#xff1a; 2. 堆排序 代码 三. 交换排序 1. 冒泡排序 代码 2. 快速排序 代码&#xff08;有注释&#xff09;&#xff1a; 动图来自网…

Mysql教程(四):DML学习

Mysql教程&#xff08;四&#xff09;&#xff1a;DML学习 前言 DML-介绍 DML英文全称是Data Manipulation Language数据库操作语言&#xff0c;用来对数据库中表的数据记录进行增删改查。 添加数据&#xff08;INSERT&#xff09;修改数据&#xff08;UPDATE&#xff09;删除…

Java 串口通讯 Demo

为什么写这篇文章 之前职业生涯中遇到的都是通过tcp协议与其他设备进行通讯&#xff0c;而这个是通过串口与其他设备进行通讯&#xff0c;意识到这里是承重板的连接&#xff0c;但实际上比如拉力、压力等模拟信号转换成数字信号的设备应该是有相当一大部分是通过这种方式通讯的…

为你精选5款体验极佳的原型设计工具!

在绘制原型图的过程中&#xff0c;使用一款的简单易操作的原型设计工具是非常重要的&#xff0c;本文精选了5款好用的原型工具与大家分享&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时设计是国内很多设计师都在用的原型设计工具&#xff0c;同时它也是国产的原型设…

JMeter正则表达式提取器和JSON提取器基础用法,小白必会!

最近在利用JMeter做接口自动化测试&#xff0c;正则表达式提取器和JSON提取器用的还挺多&#xff0c;想着分享下&#xff0c;希望对大家的接口自动化测试项目有所启发。 在 JMeter 中&#xff0c;正则表达式和 JSON 提取器都是用于从响应数据中提取所需内容&#xff0c;但它们的…

界面控件Telerik UI for WinForms R2 2023——发布全新的热图控件

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 在本文中&#xff0c;我们将揭秘一下Telerik UI for W…