Python爬虫正则匹配IP地址和端口
在网络爬虫开发中,经常需要从网页中提取IP地址和端口信息。正则表达式是一种强大的工具,可以用来匹配和提取指定格式的字符串。本文将介绍如何使用Python爬虫和正则表达式来匹配IP地址和端口。
IP地址和端口的基本概念
在计算机网络中,IP地址是一个由32位二进制数字组成的地址,用于标识网络上的设备。每个IP地址由4个8位的二进制数字组成,每个数字用点分隔开。例如,一个IP地址可以是192.168.0.1
。
端口是用于标识网络上的不同应用程序或服务的数字。一个端口是一个16位的无符号整数,范围从0到65535。其中,0到1023的端口被保留给系统使用,一般情况下不会被普通应用程序使用。
Python爬虫正则表达式匹配IP地址和端口
Python的re
模块提供了对正则表达式的支持,可以用于匹配和提取字符串中的指定模式。下面是一个简单的示例,演示了如何使用正则表达式匹配IP地址和端口:
import re
# 定义一个字符串,包含IP地址和端口信息
text = 'IP地址:192.168.0.1,端口:8080'
# 定义IP地址和端口的正则表达式模式
ip_pattern = r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
port_pattern = r'\d{1,5}'
# 使用re模块的findall方法进行匹配
ips = re.findall(ip_pattern, text)
ports = re.findall(port_pattern, text)
# 打印匹配到的IP地址和端口
print('IP地址:', ips)
print('端口:', ports)
运行以上代码,输出结果如下:
IP地址: ['192.168.0.1']
端口: ['8080']
匹配IP地址的正则表达式
IP地址由4个8位的二进制数字组成,每个数字的范围是0到255。正则表达式可以通过使用\d{1,3}
来匹配每个数字。其中,\d
表示匹配一个数字,{1,3}
表示匹配1到3个数字。通过将4个数字用点号.
分隔开,即可匹配一个完整的IP地址。
下表列出了常用的匹配IP地址的正则表达式模式及其说明:
正则表达式模式 | 说明 |
---|---|
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
匹配标准的IP地址,如192.168.0.1 |
([01]?\d{1,2}\.|2[0-4]\d\.|25[0-5]\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5]) |
匹配包括0在内的1到3位数,范围是0到255的IP地址,如192.168.0.1 |
匹配端口的正则表达式
端口是一个16位的无符号整数,范围从0到65535。正则表达式可以通过使用\d{1,5}
来匹配端口号。其中,\d
表示匹配一个数字,{1,5}
表示匹配1到5个数字。
下表列出了常用的匹配端口的正则表达式模式及其说明:
正则表达式模式 | 说明 |
---|---|
\d{1,5} |
匹配1到5位的数字 |
([1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]) |
匹配 |