XPATH 쿼리, HtmlAgilityPack 및 텍스트 추출

c# html html-agility-pack xpath

문제

나는 "tim_new"라는 클래스에서 링크를 추출하려고 시도했다. 나는 해결책이 주어졌다.

솔루션, 스 니펫 및 필요한 정보는 여기 에 제공 됩니다.

XPath 쿼리는 "//a[@class='tim_new'] . 제 질문은이 쿼리가 스 니펫의 첫 번째 줄 (위의 링크와 스 니펫의 두 번째 줄에서 어떻게 구별되었는지)입니다.

좀 더 구체적으로 말하자면이 XPATH 쿼리의 리터럴 변환 (영문)은 무엇입니까?


또한 NSE: 에 대해 작성된 텍스트를 추출하는 몇 줄의 코드를 작성하려고합니다 NSE:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

필요한 선택 쿼리를 작성하는 데 도움을 주실 수 있습니다.

내 코드는 다음과 같이 작성됩니다.

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

그러나 이것은 올바르게 보이지 않습니다. 도움이 되시면 감사하겠습니다.

인기 답변

첫 x 째 선택에서 XPath는 "tim_new 값을 갖는 class라는 속성을 갖는 모든 문서 요소를 선택하십시오"라고 읽습니다. 대괄호 안의 내용은 반환 할 항목이 아니며 검색에 적용하는 기준입니다.

HTML 애자일 팩이 없지만 텍스트로 "NSE :"가있는 div를 쿼리하려는 경우 두 번째 쿼리에 대한 XPath는 "// div"이어야하며 필터를 적용해야합니다. LINQ를 사용합니다.

좋아하는 것

var nodes = 
    doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);

그래서 영어로 "LINQ에 즉시 텍스트가 포함 된 div 요소를 모두 반환 한 다음 내부 텍스트 값에 NSE가 포함되어 있는지 확인하십시오.". 다시 말하지만, 문법이 완벽하다고 확신하지는 못합니다.하지만 그 생각이 맞습니다.

XPath "// div [@NSE :]"는 속성 이름에 ":"이 허용되지 않아 불법 인 NSE : 및 명명 된 모든 div를 반환합니다. 당신은 그 속성 중 하나가 아닌 요소의 텍스트를 찾고 있습니다.

희망이 도움이됩니다. '

참고 : 둘 다 <div>NSE: some text<div>NSE: more text</div></div> 와 같이 텍스트를 포함하는 중첩 된 div가있는 경우 <div>NSE: some text<div>NSE: more text</div></div> 결과가 중복됩니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.