我想使用Python从字符串(实际上是一行HTML)中提取IP地址。
>>> s = "<html><head><title>Current IP Check</title></head><body>Current IP Address: 165.91.15.131</body></html>"
-- '165.91.15.131‘就是我想要的!
我尝试使用正则表达式,但到目前为止我只能得到第一个数字。
>>> import re
>>> ip = re.findall( r'([0-9]+)(?:\.[0-9]+){3}', s )
>>> ip
['165']
但我对reg-expression并不是很了解;上面的代码是从网络上的其他地方找到并修改的。
发布于 2010-05-23 15:11:32
可以使用以下正则表达式仅捕获有效的IP地址
re.findall(r'\b25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\b',s)
返回
['165', '91', '15', '131']
发布于 2013-01-07 13:24:59
import re
ipPattern = re.compile('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
findIP = re.findall(ipPattern,s)
findIP contains ['165.91.15.131']
发布于 2013-01-22 03:23:15
我就是这么做的。我觉得它太干净了
import re
import urllib2
def getIP():
ip_checker_url = "http://checkip.dyndns.org/"
address_regexp = re.compile ('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
response = urllib2.urlopen(ip_checker_url).read()
result = address_regexp.search(response)
if result:
return result.group()
else:
return None
get_IP()将ip返回为字符串或无
如果您喜欢更精确的解析,或者可能更改web服务提供商,则可以用address_regexp替换其他正则表达式。
https://stackoverflow.com/questions/2890896
复制相似问题