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

C# 如何通过HttpWebResponse获取请求网页的标题

C# 基于HttpWebRequest获取网页标题的实现方案

你现有代码已经拿到了HttpWebResponse对象,接下来只需要读取响应的HTML内容,再提取<title>标签即可,具体实现如下:


完整代码示例(无第三方依赖)

HttpWebResponse response = null;
var request = System.Net.HttpWebRequest.Create(websiteName);
try
{
    response = (HttpWebResponse)request.GetResponse();
}
catch (WebException web)
{
    response = (HttpWebResponse)web.Response;
}

string html = string.Empty;
string pageTitle = string.Empty;
if (response != null)
{
    // 处理编码,避免中文乱码
    Encoding encoding = Encoding.UTF8;
    if (!string.IsNullOrEmpty(response.CharacterSet))
    {
        try
        {
            encoding = Encoding.GetEncoding(response.CharacterSet);
        }
        catch 
        {
            // 编码获取失败时 fallback 到UTF8
            encoding = Encoding.UTF8;
        }
    }

    // 读取响应流得到HTML内容
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream, encoding))
    {
        html = reader.ReadToEnd();
    }
    response.Close();

    // 正则匹配<title>标签内容
    var titleMatch = System.Text.RegularExpressions.Regex.Match(html, @"<title>\s*(.+?)\s*</title>", RegexOptions.IgnoreCase);
    if (titleMatch.Success)
    {
        pageTitle = titleMatch.Groups[1].Value.Trim();
    }
}
// 此时pageTitle变量就是提取到的网页标题

更稳定的实现方案(推荐应对复杂HTML场景)

如果业务场景中会遇到大量HTML写法不规范的页面,正则可能出现匹配失败的情况,推荐使用第三方HTML解析库处理,例如常用的HtmlAgilityPack,使用方法如下:

  1. 首先通过NuGet安装HtmlAgilityPack包
  2. 替换上述正则匹配部分的代码即可:
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(html);
var titleNode = htmlDoc.DocumentNode.SelectSingleNode("//title");
if (titleNode != null)
{
    pageTitle = titleNode.InnerText.Trim();
}

注意事项

  • 正则匹配仅适合规范的HTML场景,遇到标签嵌套错误、大小写混杂、注释中包含title标签等情况会出错,生产环境推荐使用HTML解析库
  • 编码处理是必须步骤,国内很多站点使用GBK/GB2312编码,直接用UTF8读取会出现中文乱码

内容的提问来源于stack exchange,提问作者newbieperson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:04