Python如何获取免费IP代理?

最新资讯发布日期:2021-02-18

image.png

爬虫被封,实则上是爬虫触发了网站的“反爬虫”措施,导致爬虫的IP被限制。此时如果爬虫没有大量IP来做,是无法进行下去的。因此,想要获取免费的代理,必须要进行以下操作才可以。

爬取的代码:

# coding=utf-8
import urllib2
import re

proxy_list = []
total_proxy = 0

def get_proxy_ip():
   global proxy_list
   global total_proxy
   request_list = []
   headers = {
       'Host': 'www.xicidaili.com',
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
       'Accept': r'application/json, text/javascript, */*; q=0.01',
       'Referer': r'http://www.xicidaili.com/',
   }
   for i in range(3, 11):
       request_item = "http://www.xicidaili.com/nn/" + str(i)
       request_list.append(request_item)

   for req_id in request_list:
       req = urllib2.Request(req_id, headers=headers)
       response = urllib2.urlopen(req)
       html = response.read().decode('utf-8')

       ip_list = re.findall(r'\d+\.\d+\.\d+\.\d+', html)
       port_list = re.findall(r'<td>\d+</td>', html)
       for i in range(len(ip_list)):
           total_proxy += 1
           ip = ip_list[i]
           port = re.sub(r'<td>|</td>', '', port_list[i])
           proxy = '%s:%s' % (ip, port)
           proxy_list.append(proxy)
   return proxy_list


def get_proxy_ip1():
   global proxy_list
   global total_proxy
   request_list = []
   headers = {
       'Host': 'www.kuaidaili.com',
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
       'Accept': r'application/json, text/javascript, */*; q=0.01',
       'Referer': r'www.kuaidaili.com/',
   }
   for i in range(1, 10):
       request_item = "https://www.kuaidaili.com/free/inha/" + str(i)+"/"
       request_list.append(request_item)

   for req_id in request_list:
       req = urllib2.Request(req_id, headers=headers)
       response = urllib2.urlopen(req)
       html = response.read().decode('utf-8')

       ip_list = re.findall(r'\d+\.\d+\.\d+\.\d+', html)
       port_list = re.findall(r'<td data-title="PORT">\d+</td>', html)
       for i in range(len(ip_list)):
           total_proxy += 1
           ip = ip_list[i]
           port = re.findall(r'\d+',  port_list[i])[0]
           proxy = '%s:%s' % (ip, port)
           proxy_list.append(proxy)
   return proxy_list


def get_proxy_ip2():
   global proxy_list
   global total_proxy
   request_list = []
   headers = {
       'Host': 'www.ip3366.net',
       'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
       'Accept': r'application/json, text/javascript, */*; q=0.01',
       'Referer': r'www.ip3366.net/',
   }
   for i in range(1, 10):
       request_item = "http://www.ip3366.net/?stype=1&page=" + str(i)
       request_list.append(request_item)

   for req_id in request_list:
       req = urllib2.Request(req_id, headers=headers)
       response = urllib2.urlopen(req)
       html = response.read()
       ip_list = re.findall(r'\d+\.\d+\.\d+\.\d+', html)
       port_list = re.findall(r'<td>\d+</td>', html)
       for i in range(len(ip_list)):
           total_proxy += 1
           ip = ip_list[i]
           port = re.sub(r'<td>|</td>', '', port_list[i])
           proxy = '%s:%s' % (ip, port)
           proxy_list.append(proxy)
   return proxy_list


if __name__=="__main__":
   get_proxy_ip()
  # get_proxy_ip1()
   get_proxy_ip2()
   print("获取ip数量为:" + total_proxy)



获取结果:

image.png

使用代理访问网站的代码:

   proxy_ip = random.choice(proxy_list)
   user_agent = random.choice(user_agent_list)
   print proxy_ip
   print user_agent

   proxy_support = urllib2.ProxyHandler({'http': proxy_ip})
   opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
   urllib2.install_opener(opener)

   req = urllib2.Request(url)
   req.add_header("User-Agent", user_agent)

   
   c = urllib2.urlopen(req, timeout=10)

利用以上的步骤,就可以轻松实现Python获取免费IP代理,大家感兴趣的话,不妨尝试学习下哦~

挂件 关闭
客服
二维码
客服二维码

加微信 领流量

大客户经理二维码

售前咨询,企业定制

专属客服竭诚为您服务