2012-07-10 2 views
5

작은 다운로드 링크를 작성하고 있습니다. 내가 찾을 필요가 무엇HTMLAgilityPack을 사용하여 속성 data-url을 가진 요소를 선택하십시오.

하는 HTML 페이지에서 모든 링크 (뿐만 아니라 링크가 .pgn하기 위해 파일 .JPG 링크에, .PDF 또는 .html, ... - 파일)입니다

은 html-agilitypack을 사용하여 모든 a-href 링크를 찾습니다.

샘플 코드 :

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]")) 
{ 
    HtmlAttribute attribute = link.Attributes["href"]; 
    links.Add(attribute.Value); 
} 

는하지만 난뿐만 아니라 데이터 URL을 찾고 싶어요.

데이터 URL을 찾으려면 어떤 XPath 구문을 사용해야합니까? htmlcode의 데이터 URL 예 :

"2012 \ edmonton \ partien.pgn"이 필요합니다. XPath 구문을 사용하여 이것을 어떻게 알 수 있습니까?

내가 가장 나쁜 인사를하면, 나에게 말해 줘. 이것은 나의 첫 번째 질문입니다.

답변

11

다음은 당신이 원하는 일을해야합니다

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]")) 
{ 
    HtmlAttribute attribute = divNode.Attributes["data-url"]; 
    links.Add(attribute.Value); 
} 

효과적으로 문 //div[@data-url]는 데이터 URL 속성을 가진 모든 노드를 선택해야합니다. 그런 다음이 속성을 제거합니다.

이 속성을 가진 div가 아닌 노드가있는 경우 //*[@data-url]이 트릭을 수행해야합니다.

+0

많은 덕분에 완벽하게 작동합니다. –

+2

'div' -' "// * [@ data-url]"'대신'*'를 사용하는 것이 더 유연 할 수 있습니다. 그 harn html 저자는 그들의 html를 바꾸는 것을 계속한다! – user3791372

관련 문제