Парсинг безымянных блоков в AngleSharp

197
21 мая 2018, 13:10

Подскажите пожалуйста как из этого блока выбрать только вот это : 8.85 р / шт

<div class="price">
      <!--Розничные цены-->
     <!-- 1 -->
        <span style='font-size:12px;color:#313131;'>дисконт</span> <span class="discount-price">8.60</span><br>
        8.85 р / шт     
    <!--/Розничные цены--> 
          </div>

Сейчас пробую так: var price = document.Result.QuerySelectorAll(@".price"); Но в результате выводится все, что находится в блоке <div></div>

Answer 1

Я дал вам ссылку на вопрос на enSO, там есть красивый вариант (через чтение AngleSharp'ом безымянных блоков CSS) и мой варварский в вопросе (вырезанием всех "лишних" нод).

В вашем случае начните с чего-то типа:

var parser = new HtmlParser();
var document = parser.Parse(@"<div class=""price"">
      <!--Розничные цены-->
     <!-- 1 -->
        <span style='font-size:12px;color:#313131;'>дисконт</span> <span class=""discount-price"">8.60</span><br>
        8.85 р / шт     
    <!--/Розничные цены--> 
          </div>");
var priceBlocks = document.QuerySelectorAll("div.price");
foreach (var block in priceBlocks)
{
    var element = block.ChildNodes.First(o => o.NodeType == AngleSharp.Dom.NodeType.Text && o.TextContent.Trim() != "");
    element.Text().Trim().Dump();
}

Linqpad говорит, что вам вполне сойдёт для начала:

Писал наспех, поэтому подразумеваю, что вы понимаете, что такое linq.

READ ALSO
Проверка всех TextBox&#39;ов на пустоту

Проверка всех TextBox'ов на пустоту

На GroupBox расположены TextB и СомboB как проверить их разом на заполненость(пустоту) и изменить цвет пустых? Хотя бы текстбоксы, комбо не принципиальноЗаранее...

270
Как правильно использовать Monitor.Wait и Pulse?

Как правильно использовать Monitor.Wait и Pulse?

Подскажите, как выполняется данный код:

233
Формат пакета (передача через сокеты) [требует правки]

Формат пакета (передача через сокеты) [требует правки]

С помощью сокетов нужно переслать пакет в формате: [имя][время][сообщения]

215
Как удалить в MySql различные значения от символа до символа

Как удалить в MySql различные значения от символа до символа

К примеру есть таблица wp_posts в которой существует колонка post_content

175