You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中无需外部模块提取URL的HTML标题并创建变量(需代码详解)

Python 3 无外部模块提取HTML标题教程

嘿,作为Python新手,咱们一步步来搞定这个需求!完全用Python自带的标准库,不用装任何外部模块,就能从URL里抠出<title>标签的内容,还能把标题存到变量里~

完整代码示例

import urllib.request

def get_page_title(url):
    # 发送HTTP请求获取HTML内容
    try:
        # 创建请求对象并打开URL,with语句自动管理连接关闭
        with urllib.request.urlopen(url) as response:
            # 读取二进制响应并解码为字符串,忽略编码错误避免崩溃
            html_content = response.read().decode('utf-8', errors='ignore')
            
            # 查找<title>和</title>标签的位置
            start_tag = html_content.find('<title>')
            end_tag = html_content.find('</title>')
            
            # 验证标签有效性并提取内容
            if start_tag != -1 and end_tag != -1 and end_tag > start_tag:
                # 截取标签之间的内容,去掉前后空白
                title = html_content[start_tag + len('<title>') : end_tag].strip()
                return title
            else:
                return "未找到<title>标签"
    except Exception as e:
        # 捕获所有请求相关错误并返回提示
        return f"请求出错:{str(e)}"

# 示例:替换成你要提取的目标URL
target_url = "https://www.example.com"
# 调用函数提取标题并存储到变量
page_title = get_page_title(target_url)
# 打印结果验证
print(f"页面标题:{page_title}")

逐行详细解释

咱们拆开来看看每一部分都在做什么:

1. 导入标准库

import urllib.request

这是Python自带的HTTP请求工具库,专门用来处理URL请求,不需要额外安装任何东西,直接就能用。

2. 定义提取标题的函数

函数get_page_title是咱们的核心逻辑,接收一个URL参数,负责从这个URL里抠出标题。

异常处理包裹

try:
    # 核心逻辑在这里
except Exception as e:
    return f"请求出错:{str(e)}"

网络请求很容易出问题——比如URL打错了、没网、服务器拒绝访问,用try...except包裹后,程序不会直接崩溃,而是返回友好的错误提示,新手调试起来更方便。

发送请求获取HTML内容

with urllib.request.urlopen(url) as response:
    html_content = response.read().decode('utf-8', errors='ignore')
  • with语句:自动帮我们管理连接,请求完成后会自动关闭连接,不用手动操心,安全又省心;
  • urlopen(url):向目标URL发送GET请求,返回一个包含服务器响应的对象;
  • response.read():读取服务器返回的二进制内容(因为网络传输都是二进制);
  • .decode('utf-8', errors='ignore'):把二进制转成我们能看懂的字符串,用UTF-8编码(大部分网站都用这个),errors='ignore'是为了忽略个别编码错误,避免因为一个奇怪的字符导致整个程序报错。

查找并提取标签</h4> <pre class="hljs"><code class="language-python volc-pre-code">start_tag = html_content.find('<title>') end_tag = html_content.find('</title>') </code></pre> <ul> <li><code>find()</code>方法:在HTML字符串里查找指定子串的位置,找不到会返回<code>-1</code>;</li> <li>这里分别找起始标签<code><title></code>和结束标签<code></title></code>的位置。</li> </ul> <pre class="hljs"><code class="language-python volc-pre-code">if start_tag != -1 and end_tag != -1 and end_tag > start_tag: title = html_content[start_tag + len('<title>') : end_tag].strip() return title else: return "未找到<title>标签" </code></pre> <ul> <li>条件判断:确保两个标签都存在,而且结束标签在起始标签后面(避免无效的乱码情况);</li> <li><code>start_tag + len('<title>')</code>:跳过<code><title></code>标签本身,从标签后的第一个字符开始截取;</li> <li><code>: end_tag</code>:截取到结束标签的位置,刚好拿到两个标签之间的内容;</li> <li><code>.strip()</code>:去掉内容前后的空格、换行符这些多余的空白,让标题更干净;</li> <li>如果不符合条件,就返回“未找到<title>标签”的提示。</li> </ul> <h3 id="_3-调用函数并存储标题">3. 调用函数并存储标题 <a class="header-anchor" href="#_3-调用函数并存储标题" aria-hidden="true">#</a></h3> <pre class="hljs"><code class="language-python volc-pre-code">target_url = "https://www.example.com" page_title = get_page_title(target_url) print(f"页面标题:{page_title}") </code></pre> <ul> <li><code>target_url</code>:替换成你想要提取标题的目标URL;</li> <li><code>page_title = get_page_title(target_url)</code>:调用函数,把提取到的标题存到<code>page_title</code>变量里,之后你可以用这个变量做任何事情——比如打印、保存到文件、用来命名文件等等;</li> <li><code>print()</code>:打印结果,验证咱们的代码是否成功。</li> </ul> <h2 id="额外小技巧:兼容大小写的标签">额外小技巧:兼容大小写的标签 <a class="header-anchor" href="#额外小技巧:兼容大小写的标签" aria-hidden="true">#</a></h2> <p>有些网站的<title>标签可能写成大写(比如<code><TITLE></code>),如果要兼容这种情况,可以修改查找逻辑:</p> <pre class="hljs"><code class="language-python volc-pre-code"># 先把HTML内容转成小写,再查找标签位置 lower_html = html_content.lower() start_tag = lower_html.find('<title>') end_tag = lower_html.find('</title>') </code></pre> <p>这样不管标签是大写还是小写,都能找到对应的位置啦~</p> <p>内容的提问来源于stack exchange,提问作者Lectro</p>

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:59:09