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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HtmlAgilityPack;
 
namespace ConsoleApplication20
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = @"<div class=""d - right""> 
               <a href = ""/reservation/?movieId=26100884&movId=2801"" class=""shedule-data  "">
                19:40
                <div class=""price_block"">...</div>        
            </a>
            
            <a href = ""/reservation/?movieId=26100926&movId=2801"" class=""shedule-data  "">
                20:30
                <div class=""price_block"">...</div>            
            </a>
            
            <a href = ""/reservation/?movieId=26101101&movId=2801"" class=""shedule-data  "">
                21:40
                <div class=""price_block"">...</div>              
            </a>
            
            <a href = ""/reservation/?movieId=26100927&movId=2801"" class=""shedule-data  "">
                23:40
                <div class=""price_block"">...</div>               
            </a>
 
        </div>
";
            HtmlDocument HD = new HtmlDocument();
            HD.LoadHtml(s);
            var strs = HD.DocumentNode.SelectNodes("//a[@class='shedule-data  ']/text()[1]");
            foreach (HtmlNode node in strs) Console.WriteLine(node.InnerText.Trim());
        }
    }
}

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


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

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

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