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]) 匹配