У меня есть следующий HTML-код, который я пытаюсь проанализировать с помощью пакета Agility HTML.
Это фрагмент всего файла, который возвращается кодом:
<div class="story-body fnt-13 p20-b user-gen">
<p>text here text here text </p>
<p>text here text here text text here text here text text here text here text text here text here text </p>
<div class="gallery clr bdr aln-c js-no-shadow mod cld">
<div>
<ol>
<li class="fader-item aln-c ">
<div class="imageWrap m10-b">
​<img class="http://www.domain.com/picture.png| " src="http://www.domain.com/picture.png" alt="alt text" />
</div>
<p class="caption">caption text</p>
</li>
</ol>
</div>
</div >
<p>text here text here text text here text here text text here text here text text here text here text </p>
<p>text here text here text text here text here text text here text here text text here text here text text here text here text </p>
<p>text here text here text text here text here text text here text here text text here text here text text here text here text </p>
</div>
Я получаю этот фрагмент кода, используя следующее (что я знаю, это грязно)
string url = "http://www.domain.com/story.html";
var webGet = new HtmlWeb();
var document = webGet.Load(url);
var links = document.DocumentNode
.Descendants("div")
.Where(div => div.GetAttributeValue("class", "").Contains("story-body fnt-13 p20-b user-gen")) //
.SelectMany(div => div.Descendants("p"))
.ToList();
int cn = links.Count;
HtmlAgilityPack.HtmlNodeCollection tl = document.DocumentNode.SelectNodes("/html[1]/body[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]");
foreach (HtmlAgilityPack.HtmlNode node in tl)
{
textBox1.AppendText(node.InnerText.Trim());
textBox1.AppendText(System.Environment.NewLine);
}
Код перебирает каждый p
и (на данный момент) добавляет его в текстовое поле. Все работает правильно, кроме тега div
с классом gallery clr bdr aln-c js-no-shadow mod cld
. Результатом этого бита HTML является то, что я получаю текстовые биты ​
и заголовок.
Каков наилучший способ опустить это в результатах?