-2

Необходимо на C# сделать парсер погоды, температуры воздуха. Нашел HtmlAgilityPack, но никак не могу въехать как пользоваться. Мне нужна инфа между тегами

<td class"bla ble">31</td> 

Помогите въехать или подскажите где посмотреть примеры, в google их много, но все какие то закрученные.

В возможном дубликате речь идет о парсинге атрибутов.

2 Answers2

1

Можно использовать AngleSharp.

Ваш пример будет примерно такого вида:

var parser = new HtmlParser();
    var document = parser.Parse(@"<body>
<div class='product'>
    <a href='/url1.html'><img src='img1.jpg' alt=''></a>
    Hello, world
    <div class='comments-likes'>1</div>
    <table id='menutable'>
        <tr>
            <td>Head1</td>
            <td>Head2</td>
        </tr>
        <tr>
            <td class='bla ble'>31</td>
            <td>content</td>
        </tr>
        <tr>
            <td class='bla ble'>32</td>
            <td>content</td>
        </tr>
    </table>
</div>
<div class='footer'>
    <a href='http://www.ya.ru/q=asdf'>
</div>
</body>");

var cells = document.QuerySelectorAll("table#menutable td.bla.ble");
foreach (var cell in cells)
{
    Console.WriteLine(cell.Text());
}

Наиболее просто подключить AngleSharp при помощи механизма NuGet пакетов, встроенного в студию.

В окне Solution Explorer щелкните правой кнопкой мыши на нужном проекте и выберите пункт Manage NuGet Packages. Затем выполните поиск пакета AngleSharp (требуется подключение к интернету) и установите.

Механизм NuGet очень удобен, я рекомендую потратить некоторое время на его изучение.

A K
  • 28,718
  • Как он подключается? Это не .dll? Спасибо. – Winteriscoming Aug 08 '17 at 07:33
  • @Winteriscoming Я подключаю его при помощи NuGet. Дополнил ответ кратким описанием того, как поставить, плюс в сети легко найдёте множество статей. – A K Aug 08 '17 at 07:49
  • Не так Console.WriteLine(cell.Text()); а так Console.WriteLine(cell.TextContent);. Спасибо. – Winteriscoming Aug 08 '17 at 08:50
0

Вот пример выборки значений из элементов <td></td> структуру HTML документа для парсинга взял здесь.

var doc = new HtmlDocument();

doc.Load(@"C:\myHtml.html");
var nodes = doc.DocumentNode
               .Descendants("table")
               .SelectMany(y => y.SelectNodes("//tr/td"))
               .Select(s => s.InnerText)
               .ToList();
sp7
  • 5,269