Python 正则表达式实现 HTML 解析和提取

2023-04-02 00:00:00 解析 提取 正则表达式

使用Python的re模块和正则表达式可以方便地实现HTML的解析和提取。以下是详细的实现方法和示例代码。

HTML解析
HTML解析可以通过正则表达式来实现,常见的HTML标签格式如下:

<tagname attribute1="value1" attribute2="value2">content</tagname>

其中,tagname表示标签名,attribute1和attribute2表示属性名,value1和value2表示属性值,content表示标签内容。

使用正则表达式可以轻松地从HTML代码中提取各个标签的内容。以下是一个实现HTML解析的示例代码:

import re

html = '<html><body><h1>pidancode.com</h1><p>皮蛋编程</p></body></html>'

# 解析HTML
pattern = r'<(\w+).*?>(.*?)</\1>'
result = re.findall(pattern, html)

# 打印各个标签的内容
for tag, content in result:
    print(f'{tag}: {content}')

输出结果为:

h1: pidancode.com
p: 皮蛋编程

该示例代码使用了正则表达式中的\1,表示引用前面匹配到的第一个组,即(\w+)。因此,该正则表达式匹配的是content格式的HTML标签。

HTML提取
HTML提取可以通过正则表达式来实现,常见的HTML标签属性格式如下:

html

<tagname attribute1="value1" attribute2="value2">content</tagname>

其中,attribute1和attribute2表示属性名,value1和value2表示属性值。

使用正则表达式可以轻松地从HTML代码中提取各个标签的属性值。以下是一个实现HTML提取的示例代码:

import re

html = '<a href="https://pidancode.com">pidancode.com</a>'

# 提取HTML标签属性值
pattern = r'<a.*?href="(.*?)".*?>.*?</a>'
result = re.findall(pattern, html)

# 打印提取到的属性值
print(result)

输出结果为:

['https://pidancode.com']

该示例代码使用了正则表达式中的.*?,表示非贪婪模式匹配任意字符。因此,该正则表达式匹配的是标签中的href属性值。

通过正则表达式的方式,可以方便地从HTML代码中提取各种信息,如标签名、标签内容、属性名、属性值等。

相关文章