[英]Parse IP addresses from txt
我正在尝试下载txt文件,您可以在此处找到。 下载文件不是问题:
testfile = urllib.URLopener()
testfile.retrieve(_proxy_list_download_, "proxies.txt")
但是问题在于,下载后它表现得很奇怪。 当我在任何txt编辑器中打开它时,都可以看到内容和IP地址,但是当我尝试将内容打印到控制台中时,它会显示以下内容:
212.3.183.210:8080; 0; 0; anonymous proxy; Italy; ; a; in); an Jose); ree download proxy IP
当我尝试从那里获取IP地址时,输出中没有地址。
with open('proxies.txt') as f:
content = f.read()
ip = re.findall( r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", content )
我已经尝试了另一个正则表达式 :
r'([0-9]+)(?:\.[0-9]+){3}'
此正则表达式仅返回3位数字。
您知道如何解析这些IP吗?
编辑:这是来自文本编辑器的复制粘贴文本,但是在编辑器中所有内容都在一行中:
# http://proxy-ip-list.com/ provides you this fresh txt proxy list to free download proxy IP
# Date: Sat, 27 Jun 2015 12:53:02 +0000
39.166.95.9:8123; 0; 0; high-anonymous; China;
178.189.92.118:3129; 16.83; 405; high-anonymous; Austria;
198.2.202.33:8090; 8.05; 884; anonymous; United States (CA, San Jose);
171.96.152.89:8080; 0; 0; anonymous; Thailand;
153.149.104.76:80; 0; 0; anonymous; Japan (Tokyo);
106.187.52.191:80; 0; 0; anonymous proxy; Japan;
194.187.214.204:80; 0.91; 6374; anonymous proxy; Finland;
59.78.160.247:8080; 0; 0; anonymous; China (Shanghai);
61.156.3.166:80; 1.12; 1449; anonymous proxy; China (Jinan);
221.238.140.164:8080; 1.39; 257; anonymous; China (Tianjin);
117.178.157.107:8123; 8.44; 847; high-anonymous; China;
39.166.205.95:8123; 0; 0; high-anonymous; China;
117.163.216.8:8123; 4.21; 1577; high-anonymous; China;
189.31.143.250:3128; 0; 0; high-anonymous; Brazil;
183.89.84.82:8080; 0; 0; anonymous proxy; Thailand;
183.88.41.42:8080; 0; 0; anonymous; Thailand;
212.3.183.210:8080; 0; 0; anonymous proxy; Italy;
您需要删除锚点,因为一行不会仅包含一个ip地址。
ip = re.findall( r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", content )
第二个正则表达式
r'([0-9]+)(?:\.[0-9]+){3}'
必须返回三位数,因为只有前三位数被捕获,如果有re.findall
方法,它将首先返回捕获。 如果没有捕获,则只有它会返回匹配项。 通过将捕获组变成非捕获组,将为您提供所需的输出。
r'\b[0-9]+(?:\.[0-9]+){3}\b'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.