打开电脑准备抓取数据,结果爬虫跑了不到半小时就提示”Connection refused”?这种情况十有八九是IP地址被网站封了。咱们今天就来聊聊怎么用西刺代理这个工具,让Python爬虫能持续稳定地工作。
先说个真实案例:小王上个月想抓取某电商平台的价格数据,结果刚跑完前10页就发现IP被拉黑了。后来他花三天时间研究西刺代理的用法,现在每天能稳定抓取上万条数据。这中间的诀窍,其实就藏在几个关键步骤里。
一、西刺代理到底是啥玩意儿?
简单来说就是个免费提供代理IP的网站(www.xicidaili.com)。上面挂着大量可用的IP地址和端口号,相当于给咱们的爬虫准备了一堆”替身马甲”。不过要注意这些IP质量参差不齐,有的能用几小时,有的可能几分钟就失效。
二、为什么非得用代理?
突破访问限制:网站发现某个IP频繁访问就会封禁 隐藏真实身份:保护本地服务器不被追踪 分布式采集:通过不同地区IP获取地域性内容 应对反爬机制:很多网站会检测单一IP行为模式三、具体怎么操作?
先装好这两个库: python pip install requests pip install bs4
第一步:获取代理IP列表 “`python import requests from bs4 import BeautifulSoup
def get_proxies(): url = ‘https://www.xicidaili.com/nn/’ headers = {‘User-Agent’: ‘Mozilla/5.0’} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, ‘lxml’)
proxies = [] for row in soup.select(‘table#ip_list tr’)[1:]: cells = row.find_all(‘td’) ip = cells[1].text port = cells[2].text protocol = cells[5].text.lower() proxies.append(f”{protocol}://{ip}:{port}”) return proxies“`
第二步:测试代理有效性 这里有个坑:西刺上的IP很多是失效的,得先做筛选 python def test_proxy(proxy): try: response = requests.get(‘http://httpbin.org/ip’, proxies={‘http’: proxy, ‘https’: proxy}, timeout=5) return True if response.status_code == 200 else False except: return False
第三步:实际请求中使用代理 “`python valid_proxies = [p for p in get_proxies() if test_proxy(p)]
for page in range(1, 100): proxy = random.choice(valid_proxies) try: response = requests.get(target_url, proxies={‘http’: proxy}, headers=headers, timeout=10) # 处理数据… except: print(f”{proxy}失效,自动切换下一个”) valid_proxies.remove(proxy) “`
四、常见问题自问自答
Q:免费代理和付费代理区别大吗? 免费的速度慢、稳定性差,适合小规模爬取。要是做商业项目,建议买付费代理服务,响应速度能快3-5倍。
Q:为什么有时用了代理还是被封? 可能遇到这几个情况: 1. 代理IP本身已经被目标网站拉黑 2. 请求频率太高(即使换IP也要控制节奏) 3. 请求头信息没伪装到位 4. 触发了网站的行为检测(比如鼠标移动轨迹)
Q:怎么判断代理是否生效? 在代码里加个测试环节: python print(requests.get(‘http://httpbin.org/ip’, proxies=proxy).json()) 正常会返回代理IP地址而不是本机IP
Q:代理需要定期更换吗? 建议每次启动爬虫时获取新IP列表。长时间使用同一批代理容易被识别,可以设置每30分钟自动更新一次IP池
Q:除了西刺还有哪些代理源? 快代理、站大爷、89代理这几个网站也提供免费IP,不过最近发现西刺的更新频率更高些
五、进阶技巧
多协议支持:注意区分http和https代理,混用会导致连接失败 智能切换策略:根据响应时间自动选择最快代理 失败重试机制:设置最多3次重试,自动剔除失效代理 日志记录系统:记录每个代理的使用次数和成功率 IP地域选择:需要特定地区IP时可以筛选城市字段最近帮朋友调试爬虫时发现个典型错误:他直接把西刺的IP复制到代码里,结果忘了处理端口号里的换行符。这种小细节特别容易让新手栽跟头,建议拿到IP后先print出来检查格式。
说到最后,其实用代理IP就像玩捉迷藏。网站管理员在明处,咱们的爬虫在暗处。关键是要掌握好节奏,别一上来就火力全开。先慢慢试探网站的容忍阈值,找到既能高效采集又不触发防御的平衡点。
本站文章由SEO技术博客撰稿人原创,作者:阿君创作,如若转载请注明原文及出处:https://www.ainiseo.com/hosting/19795.html