Python切换代理开发指南

简介: 在这本开发指南中,您将了解到如何使用requests库设置一个代理、使用Scrapy隧道代理中间件、使用2808Proxy隧道代理,2808Proxy可以申请14天的试用时间。代理是一个中间服务器,它隐藏了您的IP,因此您可以匿名和安全地浏览网页。它有许多非常有趣的实用案例,最常见的是定价情报的网络抓取、SEO监控、市场研究的数据收集等。

在这本开发指南中,您将了解到如何使用requests库设置一个代理、使用Scrapy隧道代理中间件、使用2808Proxy隧道代理,2808Proxy可以申请14天的试用时间。

代理是一个中间服务器,它隐藏了您的IP,因此您可以匿名和安全地浏览网页。它有许多非常有趣的实用案例,最常见的是定价情报的网络抓取、SEO监控、市场研究的数据收集等。

如果您想了解更多关于网络抓取的代理以及代理服务器是如何运行的,您可以随意浏览我们最近的博客。

在这本开发者指南中,您将了解到如何:

  1. 使用requests库设置一个代理
  2. 以三种不同的方式切换代理
  1. 使用Request库
  2. 使用Scrapy切换代理中间件
  3. 使用2808Proxy的智能代理管理器


让我们开始吧!

环境准备

Requests:这是一个简单而巧妙的Python HTTP库。您只需简单发送HTTP/1.1请求,无需手动向URL添加查询字符串或对POST数据进行格式编码。若要安装该库,请在终端中请运行如下命令。

python -m pip install requests


Scrapy:这是用Python编写的最强大、最快速的开源网络爬虫框架之一。它用于提取结构化数据,而这些数据可用于广泛的有用应用,如数据挖掘、信息处理或历史归档。如果你刚接触Scrapy,这个关于Scrapy的教程将是一个很好的开始。Scrapy配有一个中间件,一旦您有了一个可运行的代理列表,就可以轻松地切换代理。若要安装scrapy请运行如下命令。

pip install scrapy


2808Proxy智能代理管理器:这是一个代理管理和防禁令的解决方案,它可以管理代理池和处理禁令,这样你就可以专注于提取高质量的数据。按照本指南创建一个智能代理管理器帐户,您可以获得14天的免费试用期。您可以在任何时候取消该服务,并且在试用期间是完全免费的。

如何为Requests设置代理?

首先,导入Requests库,然后创建一个代理字典,将协议--HTTP和HTTPS映射到代理URL。最后,使用requests.get方法设置响应,使用代理字典向URL提出请求。例如:

importrequests

   proxies= { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', }

   response = requests.get('http://example.org', proxies=proxies)

为不同URL配置不同代理

即使Schema相同,您也可以为不同URL配置不同代理。当你想为你意图抓取的不同网站使用不同的代理时,它就派上了用场。

importrequests

   proxies= { 'http://example.org': 'http://10.10.1.10:3128', 'http://something.test': 'http://10.10.1.10:1080', }

   requests.get('http://something.test/some/url', proxies=proxies)

创建会话

有时候你需要创建一个会话并同时使用代理来请求页面。在这种情况下,你必须首先创建一个新的会话对象,并向其添加代理,然后最终通过会话对象发送请求:

`requests.get`本质上在后台使用了`requests.Session`。

importrequests

s= requests.Session()

s.proxies = {"http": "http://10.10.10.10:8000","https": "http://10.10.10.10:8000", }

r = s.get("http://toscrape.com")

如何切换代理?

在互联网上,你的IP地址就是你的身份。一个人只能使用一个IP向网站提出有限的请求。你可以将网站看成是某种监管机构,网站会怀疑来自同一个IP的重复请求,这就是 "IP速率限制"。网站应用的IP速率限制可能会导致阻断、限流或需要验证码问题。解决这个问题的一种方法是使用切换代理。您可以继续阅读为什么需要切换代理的更多理由。

现在让我们进入“如何使用”的部分。本教程演示了三种切换代理的方法:

  • 使用Request库编写一个切换代理逻辑
  • 使用Scrapy中间件Scrapy - rotate - proxy在python中切换代理
  • 使用2808Proxy智能代理管理器

注意:您不需要用不同的代理来运行本教程中演示的代码。如果您的产品/服务依赖于网页抓取的数据,免费的代理解决方案可能无法满足您的需求。

让我们逐一讨论这些问题。

使用Requests库切换代理

在下列的代码中,我们首先创建一个代理池字典。然后,随机选择一个代理用于我们的请求。如果代理正常运行,我们可以访问给定的网站。如果有出现连接错误,我们不得不从列表中删除此代理,并使用另一个代理重试相同的URL。

importrequests

s= requests.Session()

s.proxies = {"http": "http://1.2.3.4:8883","https": "http://1.2.3.4:8883", }

r = s.get("http://www.2808proxy.com")

Scrapy切换代理

在你的settings.py

ROTATING_PROXY_LIST = [

   'Proxy_IP:port',

   'Proxy_IP:port',

   # ...

]

像这样添加代理列表。

如果您想对IP进行更多的人为控制,你甚至可以像这样从一个文件中加载它。

开启中间件

DOWNLOADER_MIDDLEWARES = { # ...

 'rotating_proxies.middlewares.RotatingProxyMiddleware': 800,

 'rotating_proxies.middlewares.BanDetectionMiddleware': 800,

 # ...

}


现在你的所有请求将自动在代理服务器之间随机切换。

注意:有时您试图使用的代理只是被暂时封禁。在这种情况下,除了将其从代理池中删除,并使用另一个代理重试之外,没有其他的解决办法。但在其他情况下,如果它没有被封禁,只需要等一段时间,然后再使用相同的代理。

使用2808Proxy智能代理管理器

上面讨论的切换代理的方法对于构建演示和最小化可行产品十分有效。但是,一旦您的爬虫项目开始上规模以后,事情就会变得很难。代理池的基础设施管理是相当具有挑战性的、耗费时间和资源的。你很快就会发现自己需要不断刷新代理来维护代理池的健康,管理拦截、管理Session,管理轮换策略等等。代理基础设施还需要配置成与无头浏览器一起工作的模式,以抓取大量的javascript网站。 您的数据提取项目很快就被转化为代理管理项目,这很常见。

如果您采用2808Proxy智能代理管理器,它就会变成一个天然的隧道代理。这一切都将自动完成,所以您可以专注于提取高质量的数据。让我们看看它与您的Scrapy项目集成有多容易。

在Scrapy项目的设置文件中,启用中间件

DOWNLOADER_MIDDLEWARE={'scrapy_proxy2808_smartproxy.SmartProxyMiddleware': 610}

以上讨论设置的演示代码

import scrapy

classDemoSpider(scrapy.Spider):

   name = "whatever"

   proxy2808 = True

   defstart_requests(self):

       urls = [ 'https://www.2808proxy.com/page/1/', 'https://www.2808proxy.com/page/2/', ]

   for url in urls:

       yield scrapy.Request(url=url, callback=self.parse)

   defparse(self, response):

       page = response.url.split("/")[-2]

       filename = f'quotes-{page}.html'

       withopen(filename, 'wb') as f:

           f.write(response.body) self.log(f'Saved file {filename}')

这段代码发送了一个成功的HTTP Python请求

您不需要手动处理代理隧道。一切都将自动处理。


目录
相关文章
|
3月前
|
机器学习/深度学习 算法 机器人
使用 Python TorchRL 进行多代理强化学习
本文详细介绍了如何使用TorchRL库解决多代理强化学习(MARL)问题,重点讨论了在多代理环境中应用近端策略优化(PPO)。通过使用VMAS模拟器,该文展示了如何在GPU上并行训练多机器人系统,使其在避免碰撞的同时到达目标。文章涵盖了依赖项安装、PPO原理、策略与评论家网络设计、数据收集及训练循环,并强调了TorchRL在简化开发流程、提升计算效率方面的优势。无论是集中式还是分布式评论家配置,TorchRL均能有效支持复杂的MARL研究与实践。
58 5
使用 Python TorchRL 进行多代理强化学习
|
4月前
|
数据采集 API 网络安全
Python Requests代理使用入门指南
《Python Requests 代理使用入门指南》将带你深入了解如何使用Python Requests库来配置HTTP代理,并灵活处理各种权限和服务器响应问题。从代理服务器的基础知识,到代理认证与授权设置,本指南为初学者提供了全面的教学内容。
Python Requests代理使用入门指南
|
3月前
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
3月前
|
数据采集 XML 前端开发
Python爬虫实战:利用代理IP爬取百度翻译
Python 爬虫实战:利用代理 IP 爬取百度翻译
186 2
|
4月前
|
数据安全/隐私保护 Python
【Python】已解决:urllib模块设置代理ip
【Python】已解决:urllib模块设置代理ip
68 2
【Python】已解决:urllib模块设置代理ip
|
5月前
|
JSON API 数据安全/隐私保护
Python基础-使用代理
Python基础-使用代理
|
6月前
|
监控 测试技术 持续交付
Python自动化测试代理程序可用性
总之,通过编写测试用例、自动化测试和设置监控系统,您可以确保Python自动化测试代理程序的可用性,并及时发现和解决问题。这有助于提供更可靠和高性能的代理服务。
60 4
|
6月前
|
Python
python代理ip关于设置proxies的问题
python代理ip关于设置proxies的问题
|
6月前
|
存储 API Python
python之代理ip的配置与调试
python之代理ip的配置与调试
105 7
|
6月前
|
Python
Python动态IP代理防止被封的方法
Python动态IP代理防止被封的方法