众所周知,IP地址就是网络用户畅游互联网的通行证。代理IP可以伪装我们的真实IP地址,代理网络用户去取得网络信息。每个卖代理IP的网站都提供了免费IP,对于初学者来说这些就够用了。
这篇文章就是学习如何通过python,从代理IP网站抓取一些IP。主要知识点有通过requests库得到网页代码,re正则表达式提取我们需要的数据,xlwt保存数据。
完整代码如下。
import requests
import re
import xlwt
import telnetlib
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36'
}
def get_ip_port():
"""
爬取网页,提取数据
:return:IP列表
"""
ip_port_list = []
for i in range(1, 11):
url = 'https://www.kuaidaili.com/free/inha/{}/'.format(i)
response = requests.get(url, headers=headers, timeout=5)
ip_list=re.compile('<td data-title="IP">(.*?)</td>').findall(response.text)#正则表达式提取IP
port_list = re.compile('<td data-title="PORT">(.*?)</td>').findall(response.text)#正则表达式提取PORT
for ip_port in zip(ip_list,port_list):#zip()函数,IP和PORT一一对应
ip_port_list.append(ip_port)#列表添加
print(ip_port_list)
return ip_port_list
def check_IP_alive(ip_port_list):
"""
检查代理IP是否可用
:param ip_port_list: IP列表
:return: 可用的IP列表
"""
alive_list = []
for ip_port in ip_port_list:
try:
tn=telnetlib.Telnet(ip_port[0],port=ip_port[1],timeout=2)
#print(tn)
except:
print(ip_port[0]+':'+ip_port[1]+'不可用')
else:
print(ip_port[0]+':'+ip_port[1]+'可用')
alive_list.append(ip_port)
if len(alive_list)>10:#有这么些个就停止
break
print(alive_list)
return alive_list
def write_data(alive_list):
"""
写入数据,保存
:param alive_list: 可用的IP列表
:return:
"""
excel = xlwt.Workbook()
sheet = excel.add_sheet('ip_port')
for i in range(0, len(alive_list)):
for j in range(0, len(alive_list[i])):
sheet.write(i, j, alive_list[i][j])
excel.save(r'C:\Users\Administrator\Desktop\w.xls')
print('已保存文件!' + r'C:\Users\Administrator\Desktop\w.xls')
if __name__ == '__main__':
ip_port_list = get_ip_port()
alive_list = check_IP_alive(ip_port_list)
write_data(alive_list)
运行结果。