http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 11410|回复: 0

[使用技巧] c#根据网站提取域名部分的通用方法

[复制链接]
发表于 2021-8-18 16:39:10 | 显示全部楼层 |阅读模式
c#里没有根据网址提取域名部分的方法,这点可惜,后来我查看了一下其他语言,发现也基本上都没有类似的方法
本着自己做了10多年的站长,和站长工具,自己对域名也非常了解,今天自己写了一个提取域名部分的方法,如果有啥Bug还请大家指正

首我们先拿一个网址网址做为案例,比如

[C#] 纯文本查看 复制代码
 string domain = "http://www.sufeinet.com/thread-3-1-1.html";


肉眼看这个网址的域名是
[C#] 纯文本查看 复制代码
sufeinet.com


第一步,截取协议部分
[C#] 纯文本查看 复制代码
 if (!domain.ToLower().StartsWith("http://"))
                    domain = "http://" + domain;


第二步,通过Uri类提取主机部分
[C#] 纯文本查看 复制代码
   Uri Url = new Uri(domain);
                if (Url == null) return null;
                var dotBits = Url.Host.Split('.');


第三步,根据主机长度截取后两位,我们都知道网址的主机部分是用。区分的,所以我们只需要截取后两位就是域名部分
[C#] 纯文本查看 复制代码
 string DomainEnd = dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];
                if (dotBits.Length < 3)
                    ret = Url.Host;
                else if (RegexServices.DomainEndWith.Contains(DomainEnd))
                    ret = dotBits[dotBits.Length - 3] + '.' + dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];
                else
                    ret = dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];


好了,这样就能正常取到域名了。
下面是全部代码部分大家可直接下载使用
[C#] 纯文本查看 复制代码
        /// <summary>
        /// 传入一个Http地址返回域名部分  wtqx123.blog.163.com [url]www.a.com.cn[/url] aa.cnblog.com
        /// </summary>
        /// <param name="domain">httpURL</param>
        /// <returns>域名</returns>
        public static string getDomain(string domain)
        {
            string ret = string.Empty;
            try
            {
                if (!domain.ToLower().StartsWith("http://"))
                    domain = "http://" + domain;
                Uri Url = new Uri(domain);
                if (Url == null) return null;
                var dotBits = Url.Host.Split('.');
                string DomainEnd = dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];
                if (dotBits.Length < 3)
                    ret = Url.Host;
                else if (RegexServices.DomainEndWith.Contains(DomainEnd))
                    ret = dotBits[dotBits.Length - 3] + '.' + dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];
                else
                    ret = dotBits[dotBits.Length - 2] + '.' + dotBits[dotBits.Length - 1];
            }
            catch { }
            return ret;
        }




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-7-15 18:45

© 2014-2021

快速回复 返回顶部 返回列表