찾다
백엔드 개발C#.Net 튜토리얼웹페이지 정보를 캡처하는 정규식

    声明:此正则表达式只适用于.net ,使用的流程为发送http请求返回整个html网页,然后从此html页面抓取想要的数据。 

第一部分:发送httpWebRequest 请求

C#代码  

//url 地址  
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("URL"));  
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
            //浏览器类型设置  
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)";  
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"));  
              //返回的html网页数据  
            String htmlStr = reader.ReadToEnd();

  第二部分:根据返回的html获取有用数据,此方法适用于所有想通过ID或Class等等的标签找到html的需求,拿下面一个方法为例

C#代码  

  /// <summary>  
        /// 获得颜色  
         /// </summary>  
        /// <param name="htmlStr"></param>  
        /// <returns></returns>  
        public String getColor(String htmlStr)  
        {  
  //获取class为  DetailsC_Sku的html ,还可改为ID的方式     
//string regstr6 = @"<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>";      
string regstr6 = @"<(?<HtmlTag>[\w]+)[^>]*\s[cC][lL][aA][sS][sS]=(?<Quote>";  
            string regstr7 = "[\"&#39;]?)DetailsC_Sku(?(Quote)";  
            string regstr8 = @"\k<Quote>)";  
            string regstr9 = "[\"&#39;]?[^>]*>";  
            string regstr10 = @"((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>";  
            StringBuilder sb2 = new StringBuilder();  
            sb2.Append(regstr6);  
            sb2.Append(regstr7);  
            sb2.Append(regstr8);  
            sb2.Append(regstr9);  
            sb2.Append(regstr10);  
        //根据正则表达式获取的html  
            String sizeHtml = Regex.Match(htmlStr, sb2.ToString(), RegexOptions.Singleline).ToString();  
            if (!String.IsNullOrEmpty(sizeHtml))  
            {  
                String newhtml = htmlStr.Replace(sizeHtml, "");  
                string regstr11 = @"<(?<HtmlTag>[\w]+)[^>]*\s[cC][lL][aA][sS][sS]=(?<Quote>";  
                string regstr12 = "[\"&#39;]?)DetailsC_Sku(?(Quote)";  
                string regstr13 = @"\k<Quote>)";  
                string regstr14 = "[\"&#39;]?[^>]*>";  
                string regstr15 = @"((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>";  
                StringBuilder sb3 = new StringBuilder();  
                sb3.Append(regstr11);  
                sb3.Append(regstr12);  
                sb3.Append(regstr13);  
                sb3.Append(regstr14);  
                sb3.Append(regstr15);  
                String colorHtml = Regex.Match(newhtml, sb3.ToString(), RegexOptions.Singleline).ToString();  
                if (String.IsNullOrEmpty(colorHtml))  
                    return "";  
  
                //找出此colorHtml中的所有a 标签  
                Regex regex2 = new Regex(@"<a.*?>[\s\S]*?<\/a>");  
                MatchCollection mc2 = regex2.Matches(colorHtml);  
                StringBuilder sbs = new StringBuilder();  
                //循环找到颜色  
                if (mc2.Count > 0)  
                {  
                    foreach (Match mm in mc2)  
                    {  
                        sbs.Append(RemoveHtml(mm.Value.ToString())).Append(",");  
                    }  
                }  
                return sbs.ToString();  
            }  
            return "";  
              
        }

 

 

C#代码  

/// <summary>  
      /// 替换字符串中的html标签为空返回标签里的内容  
       /// </summary>  
       /// <param name="src"></param>  
       /// <returns></returns>  
       public string RemoveHtml(string src)  
       {  
           Regex htmlReg = new Regex(@"<[^>]+>", RegexOptions.Compiled | RegexOptions.IgnoreCase);  
           Regex htmlSpaceReg = new Regex("\\&nbsp\\;", RegexOptions.Compiled | RegexOptions.IgnoreCase);  
           Regex spaceReg = new Regex("\\s{2,}|\\ \\;", RegexOptions.Compiled | RegexOptions.IgnoreCase);  
           Regex styleReg = new Regex(@"<style(.*?)</style>", RegexOptions.Compiled | RegexOptions.IgnoreCase);  
           Regex scriptReg = new Regex(@"<script(.*?)</script>", RegexOptions.Compiled | RegexOptions.IgnoreCase);  
  
           src = styleReg.Replace(src, string.Empty);  
           src = scriptReg.Replace(src, string.Empty);  
           src = htmlReg.Replace(src, string.Empty);  
           src = htmlSpaceReg.Replace(src, " ");  
           src = spaceReg.Replace(src, " ");  
           return src.Trim();  
       }


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
C# .NET 개발 : 시작에 대한 초보자 안내서C# .NET 개발 : 시작에 대한 초보자 안내서Apr 18, 2025 am 12:17 AM

C# .NET 개발을 시작하려면 다음과 같은 것이 필요합니다. 1. C#의 기본 지식과 .NET 프레임 워크의 핵심 개념을 이해하십시오. 2. 변수, 데이터 유형, 제어 구조, 기능 및 클래스의 기본 개념을 마스터하십시오. 3. LINQ 및 비동기 프로그래밍과 같은 C#의 고급 기능을 배우십시오. 4. 일반적인 오류에 대한 디버깅 기술 및 성능 최적화 방법에 익숙해 지십시오. 이러한 단계를 통해 C#.NET의 세계를 점차적으로 침투하고 효율적인 응용 프로그램을 작성할 수 있습니다.

C# 및 .NET : 둘 사이의 관계 이해C# 및 .NET : 둘 사이의 관계 이해Apr 17, 2025 am 12:07 AM

C#과 .NET의 관계는 분리 할 수 ​​없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.C# .NET의 지속적인 관련성 : 현재 사용법을 살펴보십시오.Apr 16, 2025 am 12:07 AM

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

웹에서 데스크톱으로 : C# .NET의 다양성웹에서 데스크톱으로 : C# .NET의 다양성Apr 15, 2025 am 12:07 AM

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# .net 및 미래 : 신기술에 적응C# .net 및 미래 : 신기술에 적응Apr 14, 2025 am 12:06 AM

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다c# .net이 당신에게 적합합니까? 적용 가능성을 평가합니다Apr 13, 2025 am 12:03 AM

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색.NET 내의 C# 코드 : 프로그래밍 프로세스 탐색Apr 12, 2025 am 12:02 AM

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C# .NET : 핵심 개념 탐색 및 프로그래밍 기초C# .NET : 핵심 개념 탐색 및 프로그래밍 기초Apr 10, 2025 am 09:32 AM

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구