采集任务跑得慢——可能只有少数几个目标网站是瓶颈但它们拖慢了整体效率。按域名分组统计失败率和响应时间,找出”问题网站”针对性优化。
在代码里按域名记录指标
import time
from collections import defaultdict
from urllib.parse import urlparse
stats = defaultdict(lambda: {"count": 0, "errors": 0, "total_time": 0})
def fetch_with_stats(url, proxy):
domain = urlparse(url).netloc
start = time.time()
try:
resp = session.get(url, proxies=proxy, timeout=10)
elapsed = time.time() - start
stats[domain]["count"] += 1
stats[domain]["total_time"] += elapsed
return resp
except:
stats[domain]["errors"] += 1
stats[domain]["count"] += 1
return None
# 跑完后打印统计
for domain, s in sorted(stats.items()):
avg_time = s["total_time"] / (s["count"] - s["errors"]) if s["count"] > s["errors"] else 0
err_rate = s["errors"] / s["count"] * 100
print(f"{domain}: 请求{s['count']} 失败率{err_rate:.1f}% 均时{avg_time:.1f}s")
从统计里看什么
失败率超过20%的域名→IP被封或反爬太严→换住宅IP或降低频率。平均响应时间超过5秒的域名→服务器慢或代理到目标的延迟高→代理节点离目标太远。请求量最大但产出最少的域名→花了很多钱但数据质量差→评估是否继续采。
天行IP(邀请码 blsj,月付6元起)的节点质量相对稳定——如果某个域名失败率高大概率是该网站的风控升级了。
按域名分配不同策略
有了统计数据后可以差异化处理:高质量IP给高价值目标、便宜IP给一般目标;高失败率域名减少请求频率;响应慢的域名增加超时时间。
常见问题
所有域名失败率都突然飙高?
不是单个网站的问题是代理IP本身出问题了——IP进了黑名单或被限速。检查代理IP质量。
只统计不优化有用吗?
统计的意义在于发现问题然后针对解决。统计加优化才是闭环。每月看一次各域名趋势。






