Я анализирую содержимое сайта с помощью AngleSharp, и у меня возникла проблема с анонимным блоком.
См. пример кода:
var parser = new HtmlParser();
var document = parser.Parse(@"<body>
<div class='product'>
<a href='#'><img src='img1.jpg' alt=''></a>
Hello, world
<div class='comments-likes'>1</div>
</div>
<div class='product'>
<a href='#'><img src='img2.jpg' alt=''></a>
Yet another helloworld
<div class='comments-likes'>25</div>
</div>
<body>");
var products = document.QuerySelectorAll("div.product");
foreach (var product in products)
{
var productTitle = product.Text();
productTitle.Dump();
}
Итак, productTitle содержит числа из div.comments-likes, вывод:
Привет, мир 1
Еще один привет мир 25
Я пробовал что-то вроде product.FirstElementChild.NextElementSibling.Text();
, но следующим родственным элементом для элемента ссылки является div.comments-likes, а не анонимный блок. Это показывает:
1
25
Таким образом, анонимные блоки пропускаются. :(
Лучший обходной путь, который я нашел, - это удаление всех блокирующих блоков, например:
product.QuerySelector(".comments-likes").Remove();
var productTitle = product.Text().Trim();
Лучший способ для анализа текста из анонимного блока?