나는 "tim_new"라는 클래스에서 링크를 추출하려고 시도했다. 나는 해결책이 주어졌다.
솔루션, 스 니펫 및 필요한 정보는 여기 에 제공 됩니다.
XPath 쿼리는 "//a[@class='tim_new']
. 제 질문은이 쿼리가 스 니펫의 첫 번째 줄 (위의 링크와 스 니펫의 두 번째 줄에서 어떻게 구별되었는지)입니다.
좀 더 구체적으로 말하자면이 XPATH 쿼리의 리터럴 변환 (영문)은 무엇입니까?
또한 NSE:
에 대해 작성된 텍스트를 추출하는 몇 줄의 코드를 작성하려고합니다 NSE:
<div class="FL gL_12 PL10 PT15">BSE: 523395 | NSE: 3MINDIA | ISIN: INE470A01017</div>
필요한 선택 쿼리를 작성하는 데 도움을 주실 수 있습니다.
내 코드는 다음과 같이 작성됩니다.
IEnumerable<string> NSECODE = doc.DocumentNode.SelectSingleNode("//div[@NSE:]");
그러나 이것은 올바르게 보이지 않습니다. 도움이 되시면 감사하겠습니다.
첫 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>
결과가 중복됩니다.