爬虫最怕是被封 ip ,我相信很多爬虫新手都会傻傻地拿自己的 ip 用户爬取数据(顺序1的文件),前几次可能成功,但过了这个时间后,你会发现请求抛出 403 状态码,这是因为你的请求频率太高了,系统会认为你在爬虫,暂时把你的 ip 封了。
Python资源共享群:484031800
那如何解决这个问题呢?主要有下面三种办法
- 伪装请求报头(request header)
- 减轻访问频率,速度
- 使用代理IP
一般办法1作用不大,办法2的话又导致耗时太大,所以办法3是又省时又奏效的好办法
1、首先我们国内高匿代理IP 获得代理IP数据
这么多 ip够你用的了,但是也不能任性,还是尽量不要同时运行多个爬虫程序
运行文件2之后,你会得到一个下面这样的文件
2、检验这些 ip 是否可用,经本人测试,一般都是 状态码200 ,所以这步你忽略也没关系
3、智能更换代理 ip (但没有检验通过该代理,请求是否成功)
def change_proxy(proxies): proxy=random.choice(proxies) if proxy==None: proxy_support=urllib.request.ProxyHandler({}) else: