Я пытаюсь создать инструмент для поиска новостей для новостного сайта. У меня проблемы с выбором соответствующего текста, так как текст разделен на несколько разных элементов. Я использую HTML Agility Pack, и я попытался выбрать текст (// text ()) из основного div, но когда я делаю это, я получаю много ненужного текста, например javascript код. Как я могу выбрать текст из некоторых вложенных элементов и игнорировать другие элементы?
<div class="texto_container paywall">
Some text I want
<a href="https://www.sabado.pt/sabermais/ana-gomes" target="_blank" rel="noopener">
Text I want
</a>
sample of text I want
<em>
another text i want
</em>
<aside class="multimediaEmbed contentRight">
A lot of nested elements here with some text I dont want
</aside>
<div class="inContent">
A lot of nested elements here with some text I don't want
</div>
Back to the text I want!
<twitter-widget class="twitter-tweet twitter-tweet-rendered" id="twitter-widget-0" >
Don't want any of this text located in nested elements!
</twitter-widget>
<p>
Final revelant text i want to collect!
</p>
</div>
РЕДАКТИРОВАТЬ
Я пытался использовать XPath для исключения ненужных тегов, но я все еще получаю текстовые узлы из эти теги в результате.
var parse_me = htmlDoc.DocumentNode.SelectNodes("//div[@class='texto_container paywall']//text()[not(parent::aside)][not(parent::div[@class='inContent'])][not(parent::twitter-widget)]");
Я думаю, что этот код не работает, потому что в тегах, которые я не хочу включать в текст, родительские узлы не являются тегом "main", потому что это внутри множества вложенных тегов.
РЕДАКТИРОВАТЬ
После некоторых размышлений и исследований я исправил предыдущую проблему, используя вместо этого ancestor :: parent :: , и я избавился от части предполагаемого текста. Но я все еще не могу избавиться от текста twitter-widget , поскольку он всегда возвращает нулевой узел, даже если XPath скопирован из инструмента проверки Google Chrome.
var Twitter_Node = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='twitter - widget - 0']");
Возвращается как ноль. Как это возможно? XPath был скопирован с Chrome.