来源:百度搜索
提取网页源码中的头信息(通常指 <head> 标签及其内部内容)时,可以使用正则表达式匹配从 <head> 开始到 </head> 结束之间的所有内容。以下是基于公开资料整理的常用方法和正则表达式:
核心正则表达式
-
匹配整个
<head>区块(包含标签本身):pythonCopy Code<head>[\s\S]*?</head>[\s\S]:匹配任意字符(包括换行符和空格),等价于.但不受re.DOTALL限制。*?:非贪婪匹配,确保在第一个</head>就停止,避免跨多个<head>标签误匹配。- 改进:<head[\s\S]*?</head>,第一标签为开口,因为第一个标签可能存在属性,如:<head lang="zh">xxx</head>
-
仅提取
<head>内部的内容(不含<head>和</head>标签):pythonCopy Code<head>([\s\S]*?)</head>- 使用捕获组
()提取中间内容,可通过.group(1)获取。
- 使用捕获组
Python 实现示例
pythonCopy Code
import re import requests # 获取网页源码 url = "https://example.com" response = requests.get(url) html = response.text # 提取 <head> 内容 pattern = r'<head>([\s\S]*?)</head>' match = re.search(pattern, html, re.IGNORECASE) if match: head_content = match.group(1) print(head_content) else: print("未找到 <head> 标签") ⚠️ 注意:若网页内容包含多个
<head>标签(虽不符合 HTML 标准),非贪婪匹配仍可能出错。此时建议使用 BeautifulSoup 等 HTML 解析器更可靠 5。
补充说明
- 若需匹配
<title> 等具体头信息,可单独使用:pythonCopy Code<title>(.*?)</title> # 提取网页标题 - 使用
re.IGNORECASE可忽略大小写(如<HEAD>与<head>)12。 - 对于复杂或结构不规范的 HTML,正则表达式易出错,推荐使用专门的 HTML 解析库如 BeautifulSoup 5。
浙公网安备 33010602011771号