Парсинг HTML (CsQuery, HAP) - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую! Как вывести данные класса "a.shedule-data ", а именно время без дочернего блока div.price_block?
Листинг программы
  1. <div class="d-right">
  2. <a href="/reservation/?movieId=26100884&amp;movId=2801" class="shedule-data ">
  3. 19:40
  4. <div class="price_block">...</div>
  5. </a>
  6. <a href="/reservation/?movieId=26100926&amp;movId=2801" class="shedule-data ">
  7. 20:30
  8. <div class="price_block">...</div>
  9. </a>
  10. <a href="/reservation/?movieId=26101101&amp;movId=2801" class="shedule-data ">
  11. 21:40
  12. <div class="price_block">...</div>
  13. </a>
  14. <a href="/reservation/?movieId=26100927&amp;movId=2801" class="shedule-data ">
  15. 23:40
  16. <div class="price_block">...</div>
  17. </a>
  18. </div>
Я нашел вариант (велосипед). Пример на CsQuery Удаляю дочерний класс, и просто вывожу родителя...
Листинг программы
  1. var web = CQ.CreateFromUrl("http://www.luxorfilm.ru/cinema/rostov-na-donu");
  2. var kino_hall = web.Select(".shedule-data "); //проходим по всем классам "shedule-data "
  3. if (kino_hall != null)
  4. {
  5. foreach (var k in kino_hall)
  6. {
  7. CQ div = web[".price_block"];
  8. div.Remove(); //удаляем дочерний div
  9. listBox1.Items.Add(k.InnerText); //выводим данные .класса "shedule-data " в тестовом виде
  10. }
  11. }
И все бы хорошо, но так делать не есть хорошо. Из div "price_block" необходимо получать содержание определенного тега td.hall-td
Листинг программы
  1. <div class="price_block">
  2. <div class="red-triangle">
  3. </div>
  4. <div class="price-cont">
  5. <table class="pbWrap">
  6. <tbody>
  7. <tr>
  8. <td class="hall-td">Зал 6 VIP</td>
  9. <td class="price-td">Цена</td>
  10. </tr>
  11. <tr>
  12. <td>Стандарт:</td>
  13. <td>800p.</td>
  14. </tr>
  15. </tbody>
  16. </table>
  17. </div>
  18. </div>
В общем, как поступить?

Решение задачи: «Парсинг HTML (CsQuery, HAP)»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using HtmlAgilityPack;
  7.  
  8. namespace ConsoleApplication20
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             string s = @"<div class=""d - right"">
  15.               <a href = ""/reservation/?movieId=26100884&movId=2801"" class=""shedule-data  "">
  16.                19:40
  17.                <div class=""price_block"">...</div>        
  18.            </a>
  19.            
  20.            <a href = ""/reservation/?movieId=26100926&movId=2801"" class=""shedule-data  "">
  21.                20:30
  22.                <div class=""price_block"">...</div>            
  23.            </a>
  24.            
  25.            <a href = ""/reservation/?movieId=26101101&movId=2801"" class=""shedule-data  "">
  26.                21:40
  27.                <div class=""price_block"">...</div>              
  28.            </a>
  29.            
  30.            <a href = ""/reservation/?movieId=26100927&movId=2801"" class=""shedule-data  "">
  31.                23:40
  32.                <div class=""price_block"">...</div>              
  33.            </a>
  34.  
  35.        </div>
  36. ";
  37.             HtmlDocument HD = new HtmlDocument();
  38.             HD.LoadHtml(s);
  39.             var strs = HD.DocumentNode.SelectNodes("//a[@class='shedule-data  ']/text()[1]");
  40.             foreach (HtmlNode node in strs) Console.WriteLine(node.InnerText.Trim());
  41.         }
  42.     }
  43. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут