导航

提取网页源码头信息的正则表达式

Posted on 2026-03-27 15:19  pcwanli  阅读(6)  评论(0)    收藏  举报

来源:百度搜索

提取网页源码中的‌头信息‌(通常指 <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。