Python re 提取 HTML 地址
在网络爬虫和数据处理中,经常需要从 HTML 文档中提取出链接地址。Python 的 re 模块是一个强大的正则表达式工具,在处理文本匹配和提取时非常方便。本文将介绍如何使用 Python 的 re 模块提取 HTML 地址,并提供代码示例。
正则表达式基础
在使用 re 模块之前,我们需要了解一些正则表达式的基础知识。正则表达式是一种用于匹配和处理文本的字符串模式。在 Python 中,我们可以使用 re 模块来创建和应用正则表达式。
下面是一些常用的正则表达式语法:
.
:匹配任意字符。*
:匹配前一个字符的零个或多个重复。+
:匹配前一个字符的一个或多个重复。\d
:匹配一个数字字符。\w
:匹配一个字母数字字符。\s
:匹配一个空白字符。\b
:匹配一个单词边界。
提取 HTML 地址
在 HTML 文档中,链接地址通常以<a>
标签包裹,我们可以使用正则表达式来提取这些链接。下面是一个示例 HTML 文档:
<html>
<body>
<a rel="nofollow" href="
<a href="
<a href="
</body>
</html>
我们希望从这个 HTML 文档中提取出所有链接的地址。
首先,我们需要使用 re 模块的 findall
方法来匹配所有的<a>
标签:
import re
html = '''
<html>
<body>
<a rel="nofollow" href="
<a href="
<a href="
</body>
</html>
'''
links = re.findall(r'<a.*?href="(.*?)".*?>', html)
print(links)
代码输出:
[' ' '
在这个例子中,我们使用了正则表达式<a.*?href="(.*?)".*?>
来匹配<a>
标签,并使用了.*?
来匹配任意字符(非贪婪模式),"(.*?)"
来提取引号之间的内容作为链接地址。
代码示例
下面是一个完整的代码示例,演示了如何使用 Python 的 re 模块提取 HTML 地址:
import re
def extract_links_from_html(html):
pattern = r'<a.*?href="(.*?)".*?>'
links = re.findall(pattern, html)
return links
html = '''
<html>
<body>
<a rel="nofollow" href="
<a href="
<a href="
</body>
</html>
'''
links = extract_links_from_html(html)
print(links)
代码输出:
[' ' '
总结
本文介绍了如何使用 Python 的 re 模块提取 HTML 地址。首先,我们了解了正则表达式的基础知识,然后演示了如何使用正则表达式匹配和提取 HTML 中的链接地址。通过了解正则表达式的语法和使用 re 模块的方法,我们可以更加灵活地处理和提取文本数据。
关系图
下图是示意关系图,描述了 HTML 文档中链接地址的提取过程:
erDiagram
HTML -- "正则表达式匹配" : 匹配 <a> 标签
"正则表达式匹配" -- 地址 : 提取链接地址
状态图
下图是示意状态图,描述了 HTML 地址提取的状态流程:
stateDiagram
[*] --> 提取
提取 --> 结束 : 成功
提取 --> [*] : 失败
结束 --> [*]
``