c# Парсинг сайтов с использованием HttpClientHandler/HttpClient и библиотеки HtmlAgilityPack

Поделиться
HTML-код
  • Опубликовано: 24 авг 2024
  • Пошаговое руководство по созданию программы c# для парсинга данных из HTML в Visual Studio 2019 с использованием HttpClientHandler/HttpClient и библиотеки HtmlAgilityPack.
    VK - public1...
    FaceBook - / 358572395391013
    Ссылка на Git github.com/ser... на Git github.com/ser...

Комментарии • 46

  • @user-hn5km9bo2e
    @user-hn5km9bo2e  4 года назад +1

    Предлагайте темы для последующих роликов. Постараюсь выполнить ваш заказ :)

    • @user-hc1lq6qf4l
      @user-hc1lq6qf4l 4 года назад +1

      Отличный урок! по ходу просмотра появились вопросы... Можете дать ответы на вопросы новичка? не нашел ваших контактов оставлю свои на телеграм @Serjin_program

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  4 года назад

      @@user-hc1lq6qf4l что за вопросы?

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      По отображению данных добавил ролик
      ruclips.net/video/ZHyakMleitY/видео.html

    • @puser-yh9lv7kl1h
      @puser-yh9lv7kl1h 3 года назад

      Было бы полезно поработать с яндекс диском, резервное копирование и т.д.

    • @whiskasamv2342
      @whiskasamv2342 2 года назад

      HtmlAgilityPack.HtmlNode привет если вывожу только вот что то одно с сайта и вот такое вылазит что я мог пропустить. Хелпани плиз)

  • @FeuyJuiy
    @FeuyJuiy 3 года назад +1

    Отличное видео, спасибо!

  • @KJPiGames
    @KJPiGames Год назад

    Большое спасибо за туториал!

  • @stasmagnov
    @stasmagnov Год назад +2

    Как альтернатива HtmlAgilityPack, я бы предложил AngleSharp, у нее синтаксис дружелюбней:
    var table = HtmlDocument.QuerySelectorAll("#cat-udt tr"); //вытащить все строки из таблицы id= #cat-udt
    foreach (var currentLine in table) {
    var name = currentLine.QuerySelector("td:first-child + td")?.TextContent ?? ""; //парсишь уже что тебе нужно в tr с помощью QuerySelector
    }

  • @rmaximus100
    @rmaximus100 2 года назад

    Спасибо.

  • @user-rm2gi1qg5b
    @user-rm2gi1qg5b 2 года назад

    Здравствуйте, цикл для вывода таблиц не обрабатывается. Код в точности такой как у вас, но цикл foreach пропускается в методе Main.

  • @rider-cr8rg
    @rider-cr8rg 2 года назад

    Здравствуйте, все работает, но как изменить получения лист? Мне нужно вывести только первые значения из таблицы на сайте, но он выводит полностью таблицу, как бы я не менял сам лист и не пытался исправить, либо все ломается, либо не выводит данные, которые мне нужны

  • @johnny_bronxxx
    @johnny_bronxxx 3 года назад

    Спасибо за труды. Какие источники можете посоветовать для изучения сетевого программирования?

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад +1

      Сложно сказать, смотря что программировать

    • @johnny_bronxxx
      @johnny_bronxxx 3 года назад

      @@user-hn5km9bo2e asp приложения

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      @@johnny_bronxxx надеюсь, что это подойдёт
      ruclips.net/video/QT2xK8z9cNk/видео.html

  • @pervertin
    @pervertin 7 месяцев назад

    Можете код скинуть, пожалуйста?

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 месяца назад

      Ссылка на Git в описании канала

  • @zemlani
    @zemlani 9 месяцев назад

    Подскажите книги по парсингу c#

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 месяца назад

      Не искал. Обычно методом тыка. Ну и поиск в нете.

  • @clutchmeisteryo9831
    @clutchmeisteryo9831 2 года назад

    А что делать если конструкция: … Далее Далее 26 200 ₽

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  2 года назад +1

      если они сдедуют один за одним, то пишем в пути
      ".\\div[@class='product-price']\\div[@id='cost-by-impact']\\div[@class='product-price']"\\ и т.д.

  • @user-tl6gq2tj7c
    @user-tl6gq2tj7c Год назад

    Был бы шрифт чуть побольше

  • @sergiydryl4389
    @sergiydryl4389 3 года назад

    Спасибо автору за урок. У меня все работает, но есть маленькая неожиданность - у меня windows 10 на английском языке. Ну и видимо по этому, все русские буквы в виде ????????? знаков вопроса. Пытался в программке это как-то исправить типа: // string HTMLutf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(html)); но все же что то я делаю не так. Please help me.

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      Если поставить breakpoint на 72 строке и посмотреть что в rez как на картинке?
      joxi.ru/V2VpebyHkYkk5r
      если там всё нормально (как и должно быть), то скорее всего сама консоль не поддерживает кирилицу, надо смотреть настройки виндовс. А в любой другой программе поддерживающей Unicode всё будет нормалёк :)
      Сам HTML, котрый мы обрабатываем, уже в уникоде. Если посмотреть в переменную html -

    • @sergiydryl4389
      @sergiydryl4389 3 года назад

      @@user-hn5km9bo2e Все правильно, как и у вас. Но вот вопрос, а если у юзера стоит Windows Eng версии? Ну как у меня, что тогда делать? Я новичок и пока не знаю как это исправить, но предполагаю, что нужна проверка на каком компе выполняется прога. Ну и в зависимости от этого выставлять кодировку.

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      @@sergiydryl4389 Если Вы будете это выводить на форме или записывать в файл, то проблем не будет. Консоль - это только для того, чтобы по-быстрому показать результат. Для того чтобы настроить консоль надо настроить по инструкции, например, как тут
      rpeshkov.net/blog/cyrillic-symbols-on-english-windows/
      Необходимости в этом нет, но можете сделать

    • @sergiydryl4389
      @sergiydryl4389 3 года назад

      @@user-hn5km9bo2e Я сделал приложение WindowsFormApp добавит TextBox и туда бросаю данные из вашей проги и теперь шрифт Кириллица - всё Ок! Но это был вопрос немного не по теме. А вот вопрос как раз по теме: почему, когда я меняю ссылку на сайт www.flashscore.com.ua или ru.whoscored.com у меня сразу выдаёт ошибку? При этом я даже не пытаюсь ничего извлекать из страницы, я этот кусок кода просто закомментировал. Спасибо за ответы.

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      @@sergiydryl4389 это стандартная ошибка. Надо подключить протоколы посвежее :)
      В методе Main() в самом начале
      System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

  • @nikitayasnev
    @nikitayasnev 3 года назад

    Зачем нужны асинковые методы?

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      Для того, чтобы метод не тормозил текущий поток и вызывался в другом. Если об этом вопрос, то можно почитать тут habr.com/ru/post/470830/

  • @my_asceza
    @my_asceza Месяц назад +1

    спасибо за видео
    я для себя выбрал библиотеку HtmlAgilityPack
    m.ruclips.net/video/oJSj2kMCqDs/видео.html

  • @evgenyzev4265
    @evgenyzev4265 2 года назад

    Не видно. Слишком мелко

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  2 года назад

      Простите. Возьмите код с Git
      Ссылка в описании канала

  • @nikolasbayrachniy8063
    @nikolasbayrachniy8063 3 года назад

    Очень плохо слышно.

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      Скоро приедет микрофон заказанный, надеюсь поправит этот момент

  • @shvabra3550
    @shvabra3550 3 года назад

    Спасибо за ролик, но почему- то clnt.GetAsync(url).Result получает не весь HTML код страницы.

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  3 года назад

      С какой страницы? Некоторые сайты работают на JavaScript и загружают содержимое страницы на лету

    • @shvabra3550
      @shvabra3550 3 года назад

      @@user-hn5km9bo2e Спасибо, уже разобрался, так и оказалось... Сделал парсер json с вашего видео.

    • @phat80
      @phat80 3 года назад

      @@user-hn5km9bo2e какие некоторые? Да сейчас большинство сайтов либо вообще SPA, либо львиная доля контента генерируется джаваскриптом. То есть в таких случаях NET бессилен? Ну если надо парсить результат, а не сами json респонсы от сервера?

    • @user-hn5km9bo2e
      @user-hn5km9bo2e  2 года назад +1

      @@phat80 встроенный браузер в помощь :)
      Есть варианты со сторонними библиотеками, которые без визуализации эмулируют браузер и можно получить конечный HTML
      Только надо понимать, что данные тоже откуда-то берутся. Можно порыть в HTML тупо поиском по какому-нить значению.
      Или даю ещё наводку :)
      Страница может создаваться незаметно скриптом внутри браузера, но как только пользователь применяет фильтр (типа по дате или др.параметрам), то страница ломится за данными на сервак за JSON. Вот тут и ловим :)