
手把手教你用代理IP抓网页数据
最近好多朋友问老张,用Python解析网页时总遇到403错误咋整?这事儿就跟去菜市场买菜似的,你天天去同一个摊位,摊主肯定认得你。网站服务器也是这个理儿,发现你频繁访问就直接拉黑。这时候就需要咱们的代理IP神器来帮忙了。
为啥要给爬虫穿马甲?
举个真实案例:小王要抓某天气网站数据,刚抓了200页就被封IP。后来用了ipipgo的动态住宅代理,每次请求都换不同地区的IP地址,服务器压根分不清是真人访问还是爬虫,数据顺利到手。
import requests
from bs4 import BeautifulSoup
proxies = {
'http': 'http://user:pass@gateway.ipipgo.com:9020',
'https': 'http://user:pass@gateway.ipipgo.com:9020'
}
response = requests.get('https://目标网站.com', proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
这里接你的解析代码...
选代理IP要看哪些门道?
市面上的代理服务商鱼龙混杂,老张推荐ipipgo主要看中三点:
1. 真住宅IP:不像机房IP容易被识别
2. 自动轮换:每次请求自动换IP不操心
3. 协议支持:同时支持HTTP/HTTPS/SOCKS5
实战避坑指南
新手常犯的错就是代理配置不对,这里给个万能模板:
import requests
from itertools import cycle
从ipipgo获取的代理池
proxy_list = [
"gateway.ipipgo.com:8001",
"gateway.ipipgo.com:8002",
"gateway.ipipgo.com:8003"
]
proxy_pool = cycle(proxy_list)
for page in range(1, 100):
current_proxy = next(proxy_pool)
try:
response = requests.get(
url=f"https://目标网站.com/page/{page}",
proxies={"http": f"http://{current_proxy}"},
timeout=5
)
解析代码...
except:
print(f"{current_proxy}失效,自动切换下一个")
常见问题QA
Q:用了代理还是被封咋整?
A:检查两点:1.是否设置了请求头User-Agent 2.访问频率是否过高,建议在代码里加time.sleep(2)
Q:ipipgo的代理要怎么买划算?
A:做爬虫选动态住宅IP套餐,新用户有3天试用期。企业级用户记得选独享IP池,避免和别人撞车
Q:HTTPS网站抓不到数据?
A:在requests请求里要同时配置http和https的代理地址,很多人只配了一个
升级玩法小技巧
遇到反爬厉害的网站,可以配合Selenium用:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://gateway.ipipgo.com:9020')
driver = webdriver.Chrome(options=options)
driver.get("https://目标网站.com")
这里用BeautifulSoup解析driver.page_source
最后唠叨一句,选代理IP就像找对象,得找靠谱的。ipipgo用了大半年,稳定性在9成以上。特别是他们家的智能路由功能,能自动匹配最快节点,比手动切换省事多了。切记别用免费代理,轻则数据泄露,重则账号被盗,得不偿失!

