Python爬虫-付费代理推荐和使用

news2024/11/15 17:16:11

付费代理的使用

相对免费代理来说,付费代理的稳定性更高。本节将介绍爬虫付费代理的相关使用过程。

1. 付费代理分类

付费代理分为两类:

  • 一类提供接口获取海量代理,按天或者按量收费,如讯代理。

  • 一类搭建了代理隧道,直接设置固定域名代理,如阿布云代理。

本节分别以两家代表性的代理网站为例,讲解这两类代理的使用方法。

2. 讯代理

讯代理的代理效率较高,官网为 http://www.xdaili.cn/,如图。

讯代理上可供选购的代理有多种类别,包括如下几种(参考官网介绍)。

  • 优质代理: 适合对代理 IP 需求量非常大,但能接受代理有效时长较短(10~30 分钟),小部分不稳定的客户

  • 独享动态: 适合对代理 IP 稳定性要求非常高,且可以自主控制的客户,支持地区筛选。

  • 独享秒切: 适合对代理 IP 稳定性要求非常高,且可以自主控制的客户,快速获取 IP,地区随机分配

  • 动态混拨: 适合对代理 IP 需求量大,代理 IP 使用时效短(3 分钟),切换快的客户

  • 优质定制: 如果优质代理的套餐不能满足您的需求,请使用定制服务

一般选择第一类别优质代理即可,这种代理的量比较大,但是其稳定性不高,一些代理不可用。所以这种代理的使用就需要借助于上一节所说的代理池,自己再做一次筛选,以确保代理可用。

读者可以购买一天时长来试试效果。购买之后,讯代理会提供一个 API 来提取代理。

比如在这里我的提取 API 为:http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20,可能已过期,在此仅做演示。

在这里指定了提取数量为 20,提取格式为 JSON,直接访问链接即可提取代理。

接下来我们要做的就是解析这个 JSON,然后将其放入代理池中。

如果信赖讯代理的话,我们也可以不做代理池筛选,直接使用代理。不过我个人还是推荐使用代理池筛选,以提高代理可用概率。

根据上一节代理池的写法,我们只需要在 Crawler 中再加入一个 crawl 开头的方法即可。方法实现如下所示:

def crawl_xdaili(self):
        """
        获取讯代理
        :return: 代理
        """
        url = 'http://www.xdaili.cn/ipagent/greatRecharge/getGreatIp?spiderId=da289b78fec24f19b392e04106253f2a&orderno=YZ20177140586mTTnd7&returnType=2&count=20'
        html = get_page(url)
        if html:
            result = json.loads(html)
            proxies = result.get('RESULT')
            for proxy in proxies:
                yield proxy.get('ip') + ':' + proxy.get('port')

这样我们就在代理池中接入了讯代理。获取讯代理的结果之后,解析 JSON,返回代理即可。

代理池运行之后就会抓取和检测该接口返回的代理,如果代理可用,那么分数就会被设为 100,通过代理池接口即可获取到这些可用代理。

3. 阿布云代理

阿布云代理提供了代理隧道,代理速度快且非常稳定,其官网为 阿布云 - 为大数据赋能 。

阿布云代理主要分为两种:专业版和动态版,另外还有定制版(参考官网介绍)。

  • 专业版,多个请求锁定一个代理 IP,海量 IP 资源池需求,近 300 个区域全覆盖,代理 IP 可连续使用 1 分钟,适用于请求 IP 连续型业务

  • 动态版,每个请求一个随机代理 IP,海量 IP 资源池需求,近 300 个区域全覆盖,适用于爬虫类业务

  • 定制版,灵活按照需求定制,定制 IP 区域,定制 IP 使用时长,定制 IP 每秒请求数

关于专业版和动态版的更多介绍可以查看官网:动态版HTTP隧道服务说明 | 阿布云 - 为大数据赋能。

对于爬虫来说,我们推荐使用动态版,购买之后可以在后台看到代理隧道的用户名和密码。

整个代理的连接域名为 proxy.abuyun.com,端口为 9020,它们均是固定的,但是每次使用之后 IP 都会更改,该过程其实就是利用了代理隧道实现(参考官网介绍)。

其官网原理介绍如下:

  • 云代理通过代理隧道的形式提供高匿名代理服务,支持 HTTP/HTTPS 协议。

  • 云代理在云端维护一个全局 IP 池供代理隧道使用,池中的 IP 会不间断更新,以保证同一时刻 IP 池中有几十到几百个可用代理 IP。

  • 需要注意的是代理 IP 池中有部分 IP 可能会在当天重复出现多次。

  • 动态版 HTTP 代理隧道会为每个请求从 IP 池中挑选一个随机代理 IP。

  • 无须切换代理 IP,每一个请求一个随机代理 IP。

  • HTTP 代理隧道有并发请求限制,默认每秒只允许 5 个请求。如果需要更多请求数,请额外购买。

注意,默认套餐的并发请求是 5 个。如果需要更多请求数,则须另外购买。

使用教程的官网链接为:HTTP隧道(动态版)Python 接入指南| 阿布云 - 为大数据赋能。教程提供了 requests、urllib、Scrapy 的接入方式。

现在我们以 requests 为例,接入代码如下所示:

import requests
​
url = 'http://httpbin.org/get'
​
# 代理服务器
proxy_host = 'proxy.abuyun.com'
proxy_port = '9020'
​
# 代理隧道验证信息
proxy_user = 'H01234567890123D'
proxy_pass = '0123456789012345'
​
proxy_meta = 'http://%(user) s:%(pass) s@%(host) s:%(port) s' % {
    'host': proxy_host,
    'port': proxy_port,
    'user': proxy_user,
    'pass': proxy_pass,
}
proxies = {
    'http': proxy_meta,
    'https': proxy_meta,
}
response = requests.get(url, proxies=proxies)
print(response.status_code)
print(response.text)

在这里其实就是使用了代理认证,在前面我们也提到过类似的设置方法,运行结果如下:

200
{"args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.1"
  }, 
  "origin": "60.207.237.111", 
  "url": "http://httpbin.org/get"
}

输出结果的 origin 即为代理 IP 的实际地址。这段代码可以多次运行测试,我们发现每次请求 origin 都会在变化,这就是动态版代理的效果。

这种效果其实跟之前的代理池的随机代理效果类似,都是随机取出了一个当前可用代理。但是,与维护代理池相比,此服务的配置简单,使用更加方便,更省时省力。在价格可以接受的情况下,个人推荐此种代理。

4. 结语

以上内容便是付费代理的相关使用方法,付费代理稳定性比免费代理更高。读者可以自行选购合适的代理。

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

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

相关文章

矩阵的导数运算(理解分子布局、分母布局)

矩阵的导数运算(理解分子布局、分母布局) 1、分子布局和分母布局 请思考这样一个问题,一个维度为m的向量y对一个标量x的求导,那么结果也是一个m维的向量,那么这个结果向量是行向量,还是列向量呢? 答案是&#xff1a…

故障诊断 | 一文解决,PSO-BP粒子群算法优化BP神经网络模型的故障诊断(Matlab)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,PSO-BP粒子群算法优化BP神经网络模型的故障诊断(Matlab) 粒子群优化算法(Particle Swarm Optimization, PSO)是一种群体智能优化算法,用于求解优化问题。BP神经网络是一种用于模…

备战蓝桥杯————二叉树解题思维1

解决二叉树问题时,常采用两种思维模式: 遍历思维模式: 这种思维模式强调是否可以通过一次遍历二叉树来得到答案。通常使用一个遍历函数(比如前序、中序、后序遍历)结合外部变量来实现。这种方法适用于需要在每个节点上…

读人工不智能:计算机如何误解世界笔记02_Hello,world

1. Hello,world 1.1. “Hello,world”是布赖恩克尼汉和丹尼斯里奇于1978年出版的经典著作《C程序设计语言》中的第一个编程项目 1.2. 贝尔实验室可以说是现代计算机科学界中的智库,地位好比巧克力界的好时巧克力 1.3. 计算机科学界的大量创…

(响应数据)学习SpringMVC的第三天

响应数据 一 . 传统同步业务数据响应 1.1 请求资源转发与请求资源重定向的区别 请求资源转发时,froward:可不写 二 . 前后端分离异步方式 回写json格式的字符串 1 用RestController代替Controller与 ResponseBody 2 . 直接返回user对象实体 , 即可向 前端ajax 返回json字…

第七篇:CamX Sensor Bringup

第七篇:CamX Sensor Bringup 一、sensor 驱动文件编写 sensor驱动相关的文件目录在chi-cdk/oem/qcom/sensor 下。一般如果能直接从模组厂上拿到已经写好的驱动文件,那是最好的了。 如果没有,那就只能是拿到提供的寄存器setting参数,自己来写。 我们可以参考已有的驱动文…

【Linux基础】Linux自动化构建工具make/makefile

背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后…

异步http和同步http原理和差异

开发服务器端程序时,一种常见的需求是,通过向另一个http服务器发送请求,获得数据。最常规的作法是使用同步http请求的方式,过程如下 这种方式简单好用,但是在高并发场景下有缺陷。在单线程环境下,程序发送h…

台式电脑无法进桌面问题

楼主家里的台式电脑有一段时间进不了桌面,一度很困扰。 最开始发现有一个存储盘没有显示,拆开主机盖,把显卡、内存、硬盘都重新往紧压了下。重新开机后,显示器还是黑的。 表现为主机启动的声音正常,显示器没有信号接…

网络编程、UDP、TCP

计算机网络 就是将地理位置不同的具有独立功能的多台计算及外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件以及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 目的 传播交流信息、数据交换、通信 如何做…

【k8s资源调度-Deployment】

1、标签和选择器 1.1 标签Label 配置文件&#xff1a;在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签&#xff0c;语法如下 创建临时label&#xff1a;kubectl label po <资源名称> apphello -n <命令空间&#xff08;可不加&#xff0…

【Ubuntu】通过网线连接两台电脑以实现局域网连接的方法

有时我们需要将多台计算机连接在一起&#xff0c;以便实现数据共享、资源访问等功能。本文将介绍如何通过网线连接两台运行Ubuntu操作系统的电脑&#xff0c;以便它们能够直接通信&#xff0c;从而实现局域网连接。 1. 准备工作 在开始之前&#xff0c;请准备好&#xff1a; …

Java毕业设计-基于ssm的共享型汽车租赁管理系统-第64期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于ssm的共享型汽车租赁管理系统&#xff1a;有配套报告文档&#xff0c;前端jsp、jquery、bootstrap&#xff0c;后端 springmvc、spring、mybatis&#xff0c;集成汽车…

【JVM】StringTable 字符串常量池

目录 一、字符串常量池 二、String的不可变性 三、String的内存分配 四、intern() 方法与 new String() 一、字符串常量池 JVM的字符串常量池&#xff08;String Constant Pool&#xff09;是一块位于方法区&#xff08;Method Area&#xff09;的内存区域&#xff0c;用于…

四、深入学习TensorRT,Developer Guide篇(三)

上一篇文章我们一起看了下TensorRT有哪些特性或者支持哪些功能&#xff0c;这一节我们来详细的从API出发研究一下具体的实现&#xff0c;难度要上升了哦&#xff0c;请系好安全带&#xff0c;准备发车&#xff01; 文章目录 3. The C API3.1 The Build Phase3.1.1 Creating a …

10-pytorch-完整模型训练

b站小土堆pytorch教程学习笔记 一、从零开始构建自己的神经网络 1.模型构建 #准备数据集 import torch import torchvision from torch.utils.tensorboard import SummaryWriterfrom model import * from torch.utils.data import DataLoadertrain_datatorchvision.datasets.…

【深度学习】Pytorch 教程(十一):PyTorch数据结构:4、张量操作(2):索引和切片操作

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算2. 矩阵…

企业如何定制化“可靠的”系统,实现数字化转型?

二十大提出高质量发展是首要任务&#xff0c;为顺应数字经济时代的发展&#xff0c;数字化转型正不断赋能各行各业。越来越多的企业管理者也意识到数字化转型是帮助企业提升内部运营效率&#xff0c;提升业务开展效率&#xff0c;减低企业成本的有效手段。 那么如何推动企业数字…

linux前端部署

安装jdk 配置环境变量 刷新配置文件 source profile source /etc/profile tomcat 解压文件 进去文件启动tomcat 开放tomcat的端口号 访问 curl localhsot:8080 改配置文件 改IP,改数据库名字&#xff0c;密码&#xff0c; 安装数据库 将war包拖进去 访问http:…

wpf 3d 后台加载模型和调整参数

下载了一个代码&#xff0c;加载obj模型&#xff1b;它的参数在xaml里&#xff0c;模型加载出来刚好&#xff1b; 然后加载另一个obj模型&#xff1b;加载出来之后大&#xff0c;偏到很高和左的位置&#xff1b; 它之前的摄像机位置&#xff0c; Position"9.94759830064…