div 클래스 사이에 "Some text goes here"텍스트를 추출하고 싶습니다. 나는 html 민첩성 팩을 사용하고 있으며, C #
<div class="productDescriptionWrapper">
Some Text Goes here...
<div class="emptyClear"> </div>
</div>
이것이 내가 가진 것입니다 :
Description = doc.DocumentNode.SelectNodes("//div[@class=\"productDescriptionWrapper\").Descendants("div").Select(x => x.InnerText).ToList();
이 오류가 발생합니다.
An unhandled exception of type 'System.NullReferenceException'
나는 텍스트가 b / wa <h1>
인지 <p>
아니면 "div"대신에 "h1"또는 "p"라고 써야 하는지를 알고 있습니다.
누군가 제발 도와주세요.
다음과 같이 작은 따옴표를 사용하십시오.
//div[@class='productDescriptionWrapper']
모든 유형의 모든 자손을 사용하려면 다음을 사용하십시오.
//div[@class='productDescriptionWrapper']//*
,
p
와 같은 특정 유형의 모든 자손을 가져 오려면 //div[@class='productDescriptionWrapper']//p
.
div
또는 p
모든 자손을 얻으려면 :
//div[@class='productDescriptionWrapper']//*[self::div or self::p]
비어 있지 않은 모든 자손 텍스트 노드를 가져 와서 다음과 같이 사용하고 싶다고합시다 :
//div[@class='productDescriptionWrapper']//text()[normalize-space()]
귀하가 게시 한 HTML 스 니펫에서 doc
이 생성 doc
null 참조 예외를 얻을 수있는 방법은 없습니다. 어쨌든, 바깥 쪽 <div>
안에있는 텍스트를 가져오고 안쪽에있는 텍스트가 아닌 경우 xpath /text()
를 사용 하면 직접 자식 텍스트 노드를 얻을 수 있습니다.
예를 들어 다음 HTML 스 니펫이 제공됩니다.
var html = @"<div class=""productDescriptionWrapper"">
Some Text Goes here...
<div class=""emptyClear"">Don't get this one</div>
</div>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
..이 표현식은 바깥 쪽 <div>
에서만 텍스트를 반환합니다.
var Description = doc.DocumentNode
.SelectNodes("//div[@class='productDescriptionWrapper']/text()")
.Select(x => x.InnerText.Trim())
.First();
//Description :
//"Some Text Goes here..."
.. 대조적으로, 다음은 모든 텍스트를 반환합니다.
var Description = doc.DocumentNode
.SelectNodes("//div[@class='productDescriptionWrapper']")
.Select(x => x.InnerText.Trim())
.First();
//Description :
//"Some Text Goes here...
//Don't get this one"