HTMLAgilityPack 사용 태그 사이에 있지 않고 특정 노드 다음에 오는 텍스트를 추출합니다.

c# html html-agility-pack web-scraping xpath

문제

HTML 코드 :

 <b> CAR </b>
    <br></br>
  Car is something you can drive.
    <br></br>
    <br></br>

C # 코드 :

 <b> CAR </b>
    <br></br>
  Car is something you can drive.
    <br></br>
    <br></br>

내가 관리 할 수있는 것 : CAR

나는 얻을 필요가있다 :

차는 운전할 수있는 무언가입니다.

어떤 제안? 다음 노드를 추가하려고 시도했지만 NullReferenceExceptions를주었습니다. "// b [contains (text (), 'CAR') / br]"및 "// b [(텍스트 (), 'CAR'포함) / br / br] "

미리 감사드립니다. 추신 : 나는 정규 표현식을 피하고 싶다.

수락 된 답변

XPATH는 대소 문자를 구분합니다 (여기에 대한 자세한 내용은 xpath 및 c #를 사용하여 대소 문자를 무시할 수 있습니까? ) 'Car'가 포함 된 두 번째 구는 하위 요소가 아닌 B 요소입니다. 다음과 같이 작동시킬 수 있습니다.

HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'car')]"))
{
    Console.WriteLine(node.InnerText);
}

콘솔 응용 프로그램에서는 다음과 같이 출력됩니다.

HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'car')]"))
{
    Console.WriteLine(node.InnerText);
}



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