python爬⾍付费内容_Python爬⾍:⼗⼤付费代理详细对⽐
前⾔
随着⼤数据时代的到来,爬⾍已经成了获取数据的必不可少的⽅式,做过爬⾍的想必都深有体会,爬取的时候莫名其妙 IP 就被⽹站封掉了,毕竟各⼤⽹站也不想⾃⼰的数据被轻易地爬⾛。
对于爬⾍来说,为了解决封禁 IP 的问题,⼀个有效的⽅式就是使⽤代理,使⽤代理之后可以让爬⾍伪装⾃⼰的真实 IP,如果使⽤⼤量的随机的代理进⾏爬取,那么⽹站就不知道是我们的爬⾍⼀直在爬取了,这样就有效地解决了反爬的问题。
那么问题来了,使⽤什么代理好呢?这⾥指的代理⼀般是 HTTP 代理,主要⽤于数据爬取。现在打开搜索引擎⼀搜 HTTP 代理,免费的、付费的太多太多品牌,我们该如何选择呢?看完这⼀篇⽂章,想必你⼼中就有了答案。
对于免费代理,其实想都不⽤想了,可⽤率能超过 10% 就已经是谢天谢地了。真正靠谱的代理还是需要花钱买的,那这么多家到底哪家可⽤率⾼?哪家响应速度快?哪家⽐较稳定?哪家性价⽐⽐较⾼?为此,我对市⾯上⽐较流⾏的多家付费代理针对可⽤率、爬取速度、爬取稳定性、价格、安全性、请求限制等做了详细的评测,让我们来⼀起看⼀下到底哪家更强!
测评范围
免费代理
在这⾥我主要测试的是付费代理,免费代理可⽤率太低,⼏乎不会超过 10%,但为了作为对⽐,我选取了西刺免费代理进⾏了测试。
付费代理
付费代理我选取了站⼤爷、芝⿇ HTTP 代理、太阳 HTTP 代理、讯代理、快代理、蘑菇代理、阿布云代理、全⽹代理、云代理、⼤象代理、多贝云进⾏了对⽐评测,购买了他们的各个不同级别的套餐使⽤同样的⽹络环境进⾏了测评,详情如下:
注:其中蘑菇代理、太阳 HTTP 代理、芝⿇ HTTP 代理的默认版表⽰此⽹站只有这⼀种代理,不同套餐仅是时长区别,代理质量没有差别。
嗯,我把上⾯的套餐全部买了⼀遍,以供下⾯的评测使⽤。
测评⽬标
本次测评主要分析代理的可⽤率、响应速度、稳定性、价格、安全性、使⽤频率等因素,下⾯我们来⼀⼀进⾏说明。
可⽤率
可⽤率就是提取的这些代理中可以正常使⽤的⽐率。假如我们⽆法使⽤这个代理请求某个⽹站或者访问超时,那么就代表这个代理不可⽤,在这⾥我的测试样本⼤⼩为 500,即提取 500 个代理,看看⾥⾯可⽤的⽐率多少。
响应速度
响应速度可以⽤耗费时间来衡量,即计算使⽤这个代理请求⽹站⼀直到得到响应所耗费的时间。时间越短,证明代理的响应速度越快,这⾥同样是 500 个样本,计算时只对正常可⽤的代理做统计,计算耗费时间的平均值。
稳定性
由于爬⾍时我们需要使⽤⼤量代理,如果⼀个代理响应速度特别快,很快就能得到响应,⽽下⼀次请求使⽤的代理响应速度特别慢,等了三⼗秒才得到响应,那势必会影响爬取效率,所以我们需要看下商家提供的这些代理稳定性怎样,总不能这⼀个特别快,下⼀个⼜慢的不⾏。所以这⾥我们需要统计
⼀下耗费时间的⽅差,⽅差越⼤,证明稳定性越差。
价格
价格,这个当然是需要考虑的内容,如果⼀个代理不论是响应速度还是稳定性都特别不错,但是价格⾮常⾮常⾼,这也是不可接受的。
安全性
这的确也是需要考虑的因素,⽐如⼀旦不⼩⼼把代理提取的 API 泄露出去了,别⼈就肆意使⽤我们的 API 提取代理使⽤,⽽⼀直耗费的是我们的套餐。另外⼀旦别⼈通过某些⼿段获取了我们的代理列表,⽽这些代理是没有安全验证的,这也会导致别⼈偷偷使⽤我们的代理。在⽣产环境上,这⽅⾯尤其需要注意。
使⽤频率
有些代理套餐在 API 调⽤提取代理时有频率限制,有的代理套餐则会限制请求频率,这些因素都会或多或少影响爬⾍的效率,这部分因素我们也需要考虑进来。
测评标准
要做标准的测评,那就必须在标准的测评环境下进⾏,且尽可能排除⼀些杂项的⼲扰,如⽹络波动、传输延迟等⼀系列的影响。
主机选取
由于我的个⼈笔记本是使⽤ WiFi 上⽹的,所以可能会有⽹络波动,⽽且实际带宽其实并不太好把控,因此它并不适合来做标准评测使⽤。评测需要在⼀个⽹络稳定的条件下进⾏,⽽且多个代理的评测环境必须相同,在此我选择了⼀台腾讯云主机作为测试,主机配置如下:
这样我们就可以保证⼀个标准统⼀的测试环境了。
现取现测
另外在评测时还需要遵循⼀个原则,那就是现取现测,即取⼀个测⼀个。现在很多付费代理⽹站都提供了 API 接⼝,我们可以⼀次性提取多个代理,但是这样会导致⼀个问题,每个代理在提取出来的时候,商家是会尽量保证它的可⽤性的,但过⼀段时间,这个代理可能就不好⽤了,所以假如我们⼀次性提取出来了 100 个代理,但是这 100 个代理并没有同时参与测试,后⾯的代理就会经历⼀个的等待期,过⼀段时间再测这些代理的话,肯定会影响后半部分代理的有效性,所以这⾥我们将提取的数量统⼀设置成 1,即请求⼀次接⼝获取⼀个代理,然后⽴即进⾏测试,这样可以保证测试的公平性,排除了不同代理有效期的⼲扰。
时间计算
由于我们有⼀项是测试代理的响应速度,所以我们需要计算程序请求之前和得到响应之后的时间差,这⾥我们使⽤的测试 Python 库是requests,所以我们就计算发起请求和得到响应之间的时间差即可,时间计算⽅法如下所⽰:start_time = time.time()
<(test_url, timeout=timeout, proxies=proxies)
end_time = time.time()
used_time = end_time - start_time
这⾥ used_time 就是使⽤代理请求的耗时,这样测试的就仅仅是发起请求到得到响应的时间。
测试链接
测试时我们也需要使⽤⼀个稳定的且没有反爬⾍的链接,这样可以排除服务器的⼲扰,这⾥我们使⽤百度来作为测试⽬标。
超时限制
在测试时免不了的会遇到代理请求超时的问题,所以这⾥我们也需要统⼀⼀个超时时间,这⾥设置为 60 秒,如果使⽤代理请求百度,60秒还没有得到响应,那就视为该代理⽆效。
测试数量
要做测评,那么样本不能太⼩,如只有⼗⼏次测试是不能轻易下结论的,这⾥我选取了⼀个适中的测评数量 500,即每个套餐获取 500 个代理进⾏测试。
测评过程
嗯,测评过程这边主要说⼀下测评的代码逻辑,⾸先测的时候是取⼀个测⼀个的,所以这⾥定义了⼀个 test_proxy() ⽅法:
test_url = 'www.baidu/'
timeout = 60
def test_proxy(proxy):
try:
proxies = {
'https': '' + proxy
}
start_time = time.time()
<(test_url, timeout=timeout, proxies=proxies)
end_time = time.time()
used_time = end_time - start_time
print('Proxy Valid', 'Used Time:', used_time)
return True, used_time
except (ProxyError, ConnectTimeout, SSLError, ReadTimeout, ConnectionError):
print('Proxy Invalid:', proxy)
return False, None
这⾥需要传⼊⼀个参数 proxy,代表⼀个代理,即 IP 加端⼝组成的代理,然后这⾥使⽤了 requests 的 proxies 参数传递给 get() ⽅法。对于代理⽆效的检测,这⾥判断了 ProxyError, ConnectTimeout, SSLError, ReadTimeout, ConnectionError 这⼏种异常,如果发⽣了这些异常统统视为代理⽆效,返回错误。如果在 timeout 60 秒内得到了响应,那么就计算其耗费时间并返回。
在主程序⾥,就是获取 API 然后统计结果了,代码如下:max = 500
def main():
print('Testing')
used_time_list = []
valid_count = 0
total_count = 0
while True:
flag, result = get_page(api_url)
if flag:
proxy = result.strip()
if is_proxy(proxy):
total_count += 1
print('Testing proxy', proxy)
test_flag, test_result = test_proxy(proxy=proxy)
if test_flag:
valid_count += 1
used_time_list.append(test_result)
stats_result(used_time_list, valid_count, total_count)
time.sleep(wait)
if total_count == max:
break
这⾥加了⼀些判断,如 is_proxy() ⽅法判断了获取的是不是符合有效的代理规则,即判断它是不是 IP 加端⼝的形式,这样可以排除 API 返回⼀些错误信息的⼲扰。另外这⾥设置了 total_count 和 valid_count 变量,只有符合代理规则的代理参与了测试,这样才算⼀次有效测试,total_count 加⼀,如果测试可⽤,那么 valid_count 加⼀并记录耗费时间。最后调⽤了 stats_results ⽅法进⾏了统计:
import numpy as np
def stats_result(used_time_list, valid_count, total_count):
if not used_time_list or not total_count:
return
used_time_array = np.asarray(used_time_list, np.float32)
print('Total Count:', total_count,
'Valid Count:', valid_count,
'Valid Percent: %.2f%%' % (valid_count * 100.0 / total_count),
'Used Time Mean:', used_an(),
'Used Time Var', used_time_array.var())
这⾥使⽤了 Numpy 来统计了耗费时间的均值和⽅差,分别反映代理的响应速度和稳定性。
嗯,就这样,利⽤这个⽅法我对各个不同的代理套餐逐⼀进⾏了测试。
测评结果
经过测评,初步得到如下统计结果:
注:
·表中的响应时间⽅差越⼤,代表稳定性越低。
·
阿布云代理经典版⽅差较⼩是因为它是长时间锁定了同⼀个 IP,因此极其稳定,但每秒最⼤请求默认 5 次。
·多贝云代理套餐⼀⼆⽅差较⼩是因为它是长时间锁定了同⼀个 IP,因此极其稳定,但每秒最⼤请求默认 20 次。
测评分析
下⾯我们将从各个⽅⾯分析⼀下各个套餐的优劣。
可⽤率
通过可⽤率统计,我们可以发现可⽤率较⾼的代理套餐有:
学python看谁的视频比较好响应速度
通过平均响应速度判别,我们可以发现响应速度较快的代理套餐有:
稳定性
通过平均响应速度⽅差分析,我们可以发现稳定性较⾼的代理套餐有:
价格
我们可以先看⼀下各个套餐的价格:
按照包⽉的价格,我们可以统⼀对⽐如下:
安全性
对于安全性,此处主要考虑提取 API 是否有访问验证,使⽤代理时是否有访问验证,即可以通过设置⽩名单来控制哪些可以使⽤。
其中只有芝⿇ HTTP 代理、太阳 HTTP 代理默认使⽤了⽩名单限制,即只有将使⽤ IP 添加到⽩名单才可以使⽤,可以有效控制使⽤权限。
另外阿布云代理提供了隧道代理验证,只有成功配置了⽤户名和密码才可以正常使⽤。
所以在此归纳如下:
调取频率
不同的接⼝具有不同的 API 调⽤频率限制,归纳如下:
在此可以简单总结如下:
特⾊功能
除了常规的测试之外,我这边还选取了某些套餐的与众不同之处进⾏说明,这些特点有的算是缺点,有的算是优点,现列举如下:
测评综合
分项了解了各个代理套餐的可⽤率、响应速度、稳定性、性价⽐、安全性等内容之后,最后做⼀下总结:
所以在综合来看⽐较推荐的有:芝⿇代理、讯代理、阿布云、多贝云代理,详细的对⽐结果可以参照表格。
以上便是各家代理的详细对⽐测评情况,希望此⽂能够在⼤家选购代理的时候有所帮助。
众多python培训视频,尽在python学习⽹,欢迎在线学习!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。