爬虫(二)建立代理ip池

之前我们说网站反爬虫的一个常用方法是检测ip,限制访问频率。所以我们要通过设置代理ip的办法绕过这个限制。有不少提供免费代理ip的网站,像https://www.xicidaili.com/nt/,我们可以从网站上拿到很多代理ip。但是这些ip并不是每个都能用的,或者说,没几个能用的。

我们可以用beautifulsoup分析网页,然后处理,提取代理ip列表,也可以用正则表达式进行匹配。用正则表达式会快一些。ip_url就是https://www.xicidaili.com/nt/,random_hearder就是一个随机获得请求头的函数。

def download_page(url): headers = random_header() data = requests.get(url, headers=headers) return data def get_proxies(page_num, ip_url): available_ip = [] for page in range(1,page_num): print("抓取第%d页代理IP" %page) url = ip_url + str(page) r = download_page(url) r.encoding = \'utf-8\' pattern = re.compile(\'<td>.*?alt="Cn" />.*?</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>\', re.S) ip_list = re.findall(pattern, r.text) for ip in ip_list: if test_ip(ip): print(\'%s:%s通过测试,添加进可用代理列表\' %(ip[0],ip[1])) available_ip.append(ip) time.sleep(10)print(\'抓取结束\') return available_ip

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfyww.html