2010-04-02 2 views
0

웹 페이지의 HTML 데이터에 웹 클라이언트 클래스를 사용하고 있습니다. 이제 HTML 데이터에서 완전한 href 태그와 제목을 얻고 싶습니다. 처음에는 루프를 사용했는데, 비효율적 인 문제로 인해 regExp로 전환했지만 효율적인 솔루션을 얻지 못했습니다.C#의 html 데이터에서 href 태그 가져 오기

for (int i = 0; i < htmldata.Length - 5; i++) 
{ 
    if (htmldata.Substring(i, 5) == "href=") 
    { 
    n1 = htmldata.Substring(i + 6, htmldata.Length - (i + 6)).IndexOf("\""); 
    Sublink = htmldata.Substring(i + 6, n1); 
    var absoluteUri = new Uri(baseUri, temp); 
    n2 = htmldata.Substring(i + n1 + 1, htmldata.Length - (i + n1 + 1)).IndexOf("<"); 
    subtitle = htmldata.Substring(i + 6 + n1 + 2, n2 - 7); 
    } 
} 

이 코드는이 같은 링크의 일부를 받고있다 :

그는 초기 코드입니다. 이

onclick=gbar.qs(this) class=gb2>Photos 

")+"q="+encodeURIComponent(b)})}i.qs=n;function o(a,b,d,c,f,e){var g=document.getElementById(a);if(g){var 

같은

/l.href.replace(new RegExp(

/advanced_search?hl=en&q=&hl=en& 

와 제목은 절대적으로 유효하지 않습니다. 올바른 상대 href 링크 및 제목을 얻으려면 올바른 코드를 제안하십시오.

답변

1

사용 HTML Agility pack은 다음 페이지 및 관련 데이터의 모든 링크를 선택하는 XPath 식을 사용할 수 있습니다, 당신을 위해 HTML을 구문 분석합니다.

HTML을 혼자서 구문 분석하려고하면 이미 발견 한 것처럼 오류가 발생하기 쉽고 취 약합니다.

관련 문제