在爬虫时经常需要使用代理,于是我爬取了一个可以免费提供代理的网址,从中获取免费代理,从而打造属于一个自己的代理池。
如图所示,这是网址的界面展示,我们需要做的就是需要其中的ip、port列中的数据,获取数据后需要我们拼接成一个完整的IP然后保存即可,代码如下:
import requestsfrom lxml import etreeimport osurl = 'https://www.kuaidaili.com/free/inha/3/'headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36' }content = requests.get(url,headers = headers).textresonse = etree.HTML(content)tr_list = resonse.xpath('//div[@id="list"]/table/tbody/tr')#print(tr_list)ip_list = []for tr in tr_list: ip = tr.xpath('./td[1]/text()') port = tr.xpath('./td[2]/text()') proxy_ip = ip[0] +':' + port[0] #print(proxy_ip) ip_list.append(proxy_ip)print(ip_list)
代码运行后获取到完整的ip数据,接下来我们就可以使用这些代理了,这里需要使用random来随机选择一个ip。
proxy=random.choice(ip_list) #本地代理proxies={ 'http':'http://'+proxy, 'https':'https://'+proxy}try: response=requests.get('网址',proxies=proxies) print(response.text)except requests.exceptions.ConnectionError as e: print('错误:',e.args)