2012-10-17 2 views
0

웹 사이트의 콘텐츠를 고치고 있습니다.링크의 숨겨진 값 긁기

내가 긁어 모으고 싶은 분야에 내가 필요한 정확한 정보가 포함되어 있지 않은 것으로 나타났습니다. 정확한 값을 표시하려면 사용자가 클릭해야합니다.

예 : 화면에서 사용자는 "이메일 보내기"를 볼 수 있습니다. 이메일 보내기를 클릭하면 [email protected]으로 변경됩니다.

이제 "[email protected]"을 긁어 내고 싶습니다.

작동되는 한 가지 전략은 링크의 노드를 구문 분석하는 것입니다.

<a href="#" onclick="displayEmail(this, '[email protected]');......>Send Email</a> 

는 다른 옵션은 내가 string.IndexOfstring.Substring)를 사용 있습니까?

감사합니다.

+0

당신은 지정된 패턴을 검사하는 정규 표현식을 사용할 수 있습니다 여기에

당신이 제공하는 HTML 조각에서 이메일 주소를 긁어하는 방법에 대한 예입니다. – subZero

+0

@subzero 샘플 코드를 제공해 주시겠습니까? 이메일 대신 이름이나 번호를 긁어 내야 할 경우 어떻게해야합니까? – lionheart

답변

0

특정 노드를 찾거나 HTML 문서 (또는 조각)에서 노드의 속성 값을 얻으려면 AgilityPack을 사용할 수 있습니다. 또한 문자열에서 특정 정보를 추출하려면 정규 표현식, 문자열 함수 등을 사용할 수 있습니다. 추출하려는 정보의 종류에 따라 다릅니다.

전자 메일 주소를 긁거나 숫자 만 사용하려면 정규식을 사용하십시오 (예 : here).

var regex = new Regex(
    @"\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b", 
    RegexOptions.IgnoreCase 
); 
var html = @"<a href='#' onclick='displayEmail(this, ""[email protected]"")'>Send Email</a>"; 
var doc = new HtmlDocument(); 
doc.LoadHtml(html); 

// just an example on how to get node's attribute value 
// your selectors could be completely different 
var onclick = doc.DocumentNode.SelectSingleNode("a").Attributes["onclick"].Value; 
var email = regex.Match(onclick);