Спасибо, хоть ролик и идет 20 минут, но я потратил на его просмотр около 4 дней вникая в интерфейсы, обобщения и прочее, узнал много полезного вообщем)
@victorpolyakov30313 жыл бұрын
Черт, я чувствую себя умным! Я понимаю, что тут происходит! Продолжай выпускать такие простые ролики))
@trueyolu19067 жыл бұрын
Большое тебе спасибо за видео. Это моё первое видео, которое я смотрю на твоём канале, и оно очень сильно меня радует. Обязательно подписываюсь! :)
@kenguru19417 жыл бұрын
Может раньше и работало, но сейчас в классе HtmlLoader нужно в строке url = $"{settings.BaseUrl}/{settings.Prefix}/"; убрать один слеш между скобок. Вот так - url = $"{settings.BaseUrl}{settings.Prefix}/"; Иначе будет парсить на одной странице.
@xeleos4 жыл бұрын
У HtmlParser уже нет такого метода ParseAsync, теперь он называется ParseDocumentAsync
@andrewhkh234 жыл бұрын
Благодарю дружище помог)
@nellaiiiii Жыл бұрын
HttpParser не находит, не знаешь в чем проблема?
@oleksandrshmalko6265 жыл бұрын
Дядечка айПро , респект тебе от английского комьюнити и уважение от пацанов , помог
@sierraww27 жыл бұрын
Чувак ты самый лучший!!!! Удачи тебе во всем!
@intsyn6 жыл бұрын
То чувство когда начинаешь понимать что такое интерфейсы, как их реализовывают ...
@ВикторКурышев-ч3р7 жыл бұрын
Парни, респект. Отличный видос. С удовольствием повторил, многому научился.
@nikbrons8 жыл бұрын
Было бы шикарно увидеть этот парсер, но в обертке MVC/MVP или MVVM)
@Independent19c7 жыл бұрын
вау,вот это оперативно только бахнул вопрос. на трансляции про парсер и вуаля) класс спасибо!Лайк жирнющий!
@Algok175 жыл бұрын
Крутяк! Давно хотел научиться парсить сайты и тут на этот урок наткнулся. Всё понятно объясняешь, красиво кодишь и шутеички в меру. Снимаю шляпу, качаю проект.
@Algok175 жыл бұрын
Сразу не запустилось. Нужно обновить AngleSharp и перед отправкой запроса в строке var response = await client.GetAsync(currentUrl); выполнить ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
@Algok174 жыл бұрын
В идеале бы @ExtremeCode мой пулл реквест принял - там всё готово уже.
@vladisslavss3 жыл бұрын
Ты просто лучший!) После тяжелого рабочего дня твои видосики словно бальзам!)
@mikedastro29305 жыл бұрын
что то пошло не так в Parser Worker в вызове метода //// короче var htmlparser = new HtmlParser(); var doc = await htmlparser.ParseDocumentAsync(нет ParseAsync() (( чем его заменить ))(source.ToString(),System.Threading.CancellationToken.None); var result =Parser.Parse(doc);
@Андрей-я7н6к5 жыл бұрын
помог. очень помог. не знаю, почему другие с такой же проблемой не столкнулись
@sp1ne21045 жыл бұрын
так пакеты обновляются постоянно, методы изменяются, тут либо использовать старую версию как у автора или читать документацию
@КириллЕвстратов-е2л5 жыл бұрын
у меня при создании экземпляра HtmlParser падает, пишет: "Additional information: Не удалось загрузить файл или сборку "System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" либо одну из их зависимостей. Не удается найти указанный файл." Хотя я воспользовался подсказкой и все красные подчеркивания убрались. Нагуглил что то про добавление в конфиг этого: но не помогло, ошибок нет, но падает
@gevamain17515 жыл бұрын
И вот уже почти 2020 год, а второй части так и нет(( за слова не отвечаешь ска!!!(тип агро)
@AzizjanAyupov_leo4 жыл бұрын
А он разве говорил за вторую часть?
@ВладиславЗамікула4 жыл бұрын
@@AzizjanAyupov_leo говорил 23:41
@AzizjanAyupov_leo4 жыл бұрын
@@ВладиславЗамікула и правда!
@gilman20568 жыл бұрын
Вот никуя не понятно, но один х интересно смотреть
А я понял только после самостоятельного прочтения на GitHub)
@johnwalker12327 жыл бұрын
Спасибо за видео, давно его ждал. Отличный канал!
@koshatec5 жыл бұрын
Фу фу фу за WF. Кодинг с юмором мне заходит. Лайк, подписка
@dimakom27266 жыл бұрын
Мудрено, но понятно) Лукас!
@santiago14886 жыл бұрын
братик, спасиб от души душевно в душу +лайк +подписка
@milovidov426 жыл бұрын
До конца еще не досмотрел но вот комментарии автора просто чумовые! )
@johanesskrauseriii37987 жыл бұрын
Ну вот опять. Видео 24 минуты идёт, а делаешь всё 2-3 часа, ибо надо загуглить все непонятные моменты.
@andreybondarev19565 жыл бұрын
ска, а их много ;)
@geek__37438 жыл бұрын
Привет! Помнишь давным давно, вы писали парсер proxy?(Кто помнит и видел ставьте лайк ;)) Так вот, не мог бы ты запилить видосик про proxy checker. Выручи плиз)). P.S. Я думаю в тему "C# - Туториалы" норм будет!
@bad_jaguar6 жыл бұрын
Geek_ _ присоединяюсь
@apdgslfhsodbna6 жыл бұрын
Geek_ _ , ай ай ай ))))
@serios71497 жыл бұрын
Ждем вторую часть)
@Abo56Volo7 жыл бұрын
а я использую Selenium для этих целях. Парсить через CSS либо XPath. Удобно, когда надо парсить защищенного текста.
@anonimanonim14285 жыл бұрын
Ну ви іздіваєтися, превратили один маленький клас, в цілий проект!
@collesssqwer16735 жыл бұрын
я конечно не эксперт да и видео уже попахивает "актуальной" информацией но на моменте 6:34 разве не лучше ли было использовать Select, (и выбрать нужное свойство вместо того чтобы всё в лист через цикл записывать), а потом сразу же вызвать метод ToArray(), или это такой High Level стёб который слишком крут для меня ?
@stanislavhrytsyshyn17327 жыл бұрын
Спасибо, хорошая работа парень!
@БанкирТв-к2л4 жыл бұрын
Молодец, шо тут сказать, юмор прикольный)
@snakelivegames8216 жыл бұрын
Как же ты классно это записал, лайк тебе за креативность и полезность информации. Спасибо
@AlexM-gn7bp8 жыл бұрын
А вообще спасибо за видео, хороший пример наглядного использования интерефейсов да еще и обобщенных
@АлександрЯркин-й9я5 жыл бұрын
Пиздатый код. Пиздатое ооп. Пиздатый парсер
@artursveshnikov76684 жыл бұрын
Сделал на .net core 3.1 буква в букву, всё отлично работает.
@AlexM-gn7bp8 жыл бұрын
вопрос почему вы используете в классе ParserWorker в приватном методе Worker() - async void а не async Task? это же не метод обработчик события
@ExtremeCode8 жыл бұрын
Привет, тут все просто, грубо говоря, если необходимо дожидаться выполнения асинхронного метода через await, то делаем его тип Task, если не нужно - то не делаем, в нашем контексте этот метод просто работает в фоне, и информирует о завершении с помощью события, так что тип Task тут не используется
@AlexM-gn7bp8 жыл бұрын
а экспеншны(теоретические если такоевые будут) куда будут вылетать?
@vladyslavromanov70397 жыл бұрын
Можно делать Task и не дожидаться его. Очень много тем есть на этот счет, мол почему лучше юзать Task, а не void (когда это возможно)
@SuleimanVatrushkin5 жыл бұрын
Нихуя не понял, но очень интересно!
@maxbrain92056 жыл бұрын
В конце, когда делаешь форму, невозможно что-то успеть разглядеть, если не жать постоянно паузу и не отматывать назад много раз. Так ведь придется еще раз смотреть этот отрывок после создания формы, чтобы послушать твою речь. Найс...
@Ramzes6468 жыл бұрын
iPro, большое спасибо. Продолжай!
@linker-arm2 жыл бұрын
Спосибо тебе, дядюшка IPro
@Simon-tk8im7 жыл бұрын
Все очень круто, а кто-нибудь парсер погоды делал из этого?
@artemadeev74444 жыл бұрын
удалось сделать ? у меня одна страница на yandex.ru/pogoda/novosibirsk/details?via=mf#2 соответственно мне не нужен переход страниц и я застрял блин.
@fullboarduck54914 жыл бұрын
Кажется я не туда полез, мне сюда ещё рано(
@yaroslavkolyada6914 Жыл бұрын
async void это не преступление? для abort не логичнее ли использовать CancelationToken?
@Alpaha927 жыл бұрын
Отличный видос) Жаль, что парсер не подойдёт для тех, кто узнаёт о количестве страниц из пагинации, к примеру :)
@MegaSping8 жыл бұрын
спасибо, как раз что нужно для моего говно-парсера с моими копирайтами задумка та же, но придется еще научить открывать его страницы и жмакать на кнопки внутри них
@alisher.sabirov6 жыл бұрын
Сделай видео где можно было парсить более сложные вещи бро! Спасибо
@НиколайВьюгин-ъ5ш2 жыл бұрын
Повторил за автором, 5 лет дали о себе знать, 20 ошибок....
@iseengreenenjoyer3 жыл бұрын
>Делаем парсер >HTMLDocument Неплохо
@avalonex2971 Жыл бұрын
удивительно как человек предсказал это событие: 4:10
@norker436 жыл бұрын
Хотел на основе этого кода забацать парсер lostfilm, который просто выводит названия из списка сериалов в listbox, но столкнулся с проблемой. Из-за того, что контент на странице генерируется динамически парсятся только первые 10 строк. Вот ролик о том как это делать, мне бы очень пригодился
@sp1ne21045 жыл бұрын
посмотри тут: stackoverflow.com/questions/24130650/scraping-data-dynamically-generated-by-javascript-in-html-document-using-c-sharp или попробуй Selenium. Посмотри ещё CefSharp
@gloomkol8 жыл бұрын
ыПро, спасибо за C#! Мистя, а к тебе все еще остается один вопрос: Где C# ???
@РоманКанарейкин5 жыл бұрын
Как сделать чтобы отлавливал теги которые находятся в теге ? Он тупо не видит все что внутри этого тега , хотя то, что внутри так же подходит под параметры. Вот пример: Моя строка в классе "HabraParser" : var items = document.QuerySelectorAll("span").Where(x => x.ClassName != null && x.ClassName.Contains("q")); А вот кусок HTML кода, в котором есть строка, которая подходит под параметры выборки: .... Оглушает цель на 5 сек.. Действует только на замороженных противников. .... Но парсер не индексирует то, что находится в теге (в остальном все работает). Как заставить его индексировать внутри ? Не хочется брать целиком весь и регулярными выражениями выбирать все это.
@stepanzvarich66997 жыл бұрын
Спасибо) Очень помог)
@andriimilkevych18443 жыл бұрын
Ау, где вторая часть? Со сложными примерами??? Уже 4 года прошло!!
@TheShadow01977 жыл бұрын
Спасибо! Использую в своем проекте =)
@TOPCHANNELSTOP3 жыл бұрын
Тэк будет вторая часть?))
@eynsherkiel49135 жыл бұрын
Не надо делать интерфейсы на всё подряд. Зачем они настройкам? Вы не собираетесь их мокать, вам не нужно их переопределять. А уж тем более нельзя чтобы настройки как то по разному генерили поля. То есть настройки это обычный картеж данных передаваемых в процедуру / класс и тд. Они должны быть константы в сути своей.
@magpiehq89732 жыл бұрын
Ну я захочу переопределить, помокать и даже по разному генерить поля. Идёт расчёт на то, что тот, кто просмотрел видос, сможет допилить ручонками требуемый функционал.
@Coool8 жыл бұрын
Все клево но не очень жизнено. Если будет 500 с хером страниц - затрахаешься парсить. А многопоток без допиливания не завезти
@ExtremeCode8 жыл бұрын
Да не так уж и сложно, цикл Worker'а переделать на while, счетчик вынести в поле и синхронизовать увеличение lock'ом, в методе Start запускать нужное количество раз при помощи Task.Run, только в UI надо тоже при помощи инвоков синхронизовать вывод элементов
@ПавелТ-л7ь7 жыл бұрын
В реальных проектах на больших объёмах SAX parser выигрывает
@bad_jaguar6 жыл бұрын
Всё аккуенно понятно. Завтра попробую пильнуть. С формами ещё не работал правда, но разобраться можно
@alexandrsharp9204 жыл бұрын
Какой клиент лучше юзать для парсинга ? http или webclient ?
@Мастер-б6х7 жыл бұрын
Не работает проект скаченный. Просит еще какие то пакеты. AngleSharp установлен Не подскажите? Visual studio 17
@александрровенский-з1э7 жыл бұрын
там маленькая опечатка, в одном из namespace написано Parser.Cor
@RosemiNext4 жыл бұрын
Понимаю, что видос старинный, но! Парсер должен быть универсальным. Пользователь должен только ввести адресс страницы, а затем уже вибирать, что с этой страницы ему надо просто просмотреть , какую-то ссылку скопировать, что -то скачать, преобразовать страницу или запустить свой скрипт на ней. Парсер также должен быть удобен в плане работы с диском ПК. И боже упаси использовать Form... слишком старая технология. Хотя-бы WPF.
@milovidov426 жыл бұрын
Досмотрел до конца все супер спасибо пиши есче!
@MrSinn3r8 жыл бұрын
А у вас *ус отклеился* абстракции потекли
@yazimmaable6 жыл бұрын
на 22 строке переменная типа string. присваиваете null.Разве по умолчанию она уже не равна null?
@КириллЕвстратов-е2л5 жыл бұрын
по умолчанию она = "" - (string.empty)
@testantestovich16986 жыл бұрын
Спасибо за видео! Есть вопрос, если мне нужно вытянуть УРЛы изображений со всего, не с одной страницы а со всего сайта, это возможно? Можете помочь? УРЛ изображения находится здесь:
@anonimanonim14285 жыл бұрын
div[class='img'] на тобі селектор
@RubySirius8 жыл бұрын
Слушай, мне нужно сделать которая будет сравнивать файл на сайте с файлом на компе, т.е. проверять обновление файла. если он обновился, то заменить старую версию. может подскажешь чего или видос запилишь?
@geek__37438 жыл бұрын
string str1="any text"; string str2="any text"; bool equal=(str1==str2);//True bool equal1 = str1.Equals(str2);//True str2="another text"; equal=(str1==str2);//False equal1 = str1.Equals(str2);//False по идеи у класса String есть перегрузка оператора ==, которая неявно выполняет метод Equals, но я могу ошибаться
@Alex-w1v7k7 жыл бұрын
Ммм...а зачем в HarbraParser.Parse надо было добавлять это все в лист да еще и циклом?
@АлександрИви7 жыл бұрын
Поделитесь пожалуйста Где можно почитать описание библиотеки "AngleSharp" для парсера и в видео вы говорили что есть где то код на исходник но я его не нашел . С уважением IVI.
@leonid_konoplin5 жыл бұрын
братуля, где вторая часть?
@slivich6 жыл бұрын
А можете рассказать как из всей это информации вывести только нужное тебе в другое окно (по ключевым словам)
@valtaiga7 жыл бұрын
Спасибо, как ни странно, я большинство понял и вообще заебись представляешь пособие (интересно). А если серьезно, то через WebSockets как-то проще это делать, не очень понимаю зачем велосипед изобретать)
@vadimzhuravskyi72222 жыл бұрын
учус щас с++ и с# мне интересно если данные с сайта можно получить только с авторизацией как програмно сделать это? или нужен АПИ? мб есть у кого информация
@AzizjanAyupov_leo4 жыл бұрын
Классный туториал) Но зачем, а главное нахуя создавать property IsActive если всё равно его не используешь?))
@ВНаушниках-о7н5 жыл бұрын
не получается гугл парсить QuerySelectorAll без результатов. такое чуство что натыкаюсь на капчу и не видно никаких классов помогите
@_petux73553 жыл бұрын
Я нихуя не понял, но ты сделал мне проектную за 2е суток до сдачи
@followtheculture88176 жыл бұрын
Как научить парсер переходить по ссылкам и парсить данные дальше ?
@BoxaShu8 жыл бұрын
давай продолжение.
@НиколайФролов-м3м7 жыл бұрын
Давай вторую часть! =)
@GrafMKristo7 жыл бұрын
OnSomething?.Invoke(this); Я не знаю, что это за нотация! Справочники по событиям молчат. Ткните пожалуйста!
@ExtremeCode7 жыл бұрын
Это короткий аналог вот такой конструкции if(OnSomething != null) { OnSomething(this); } P.S. Это делегат, а не событие. У делегатов есть метод Invoke, который по сути аналогичным образом вызывает метод по ссылке, оператор ? проверяет равен ли делегат OnSomething null'у, если там есть что либо, то вызывается метод Invoke со следующими аргументами
@GrafMKristo7 жыл бұрын
Большое спасибо, дядя iPro!
@Excalib7 жыл бұрын
Мне кажется он имел ввиду именование "OnSomething"
@almazmusic4 жыл бұрын
Образцовый туториал по кодингу
@РинатРаот8 жыл бұрын
Блин,круто))
@andrewbonchuk4507 жыл бұрын
День добрый! Проблема с VS 17, нет консольного менеджера пакетов. Что за беда?
@andrewbonchuk4507 жыл бұрын
И в вид >> другие окна>> нет Package Manager Console. Гугл молчит.
@IndGam7 жыл бұрын
устанавливай NuGet
@yuriilitvin33065 жыл бұрын
Давай 2-ю часть!!!!!
@ДмитрийН-л9ф7 жыл бұрын
4:09 чудная кнопка! а что если она не появилась?
@AzizjanAyupov_leo4 жыл бұрын
Ctrl + .
@maksymo99177 жыл бұрын
когда вторая часть ?)
@andrmiw96 жыл бұрын
а что делать, если не нужен вообще префикс, например для вк? Я попробовал его убрать, не помогло(
@kem0n6 жыл бұрын
Скачал и запустил проект, выкидывает HttpRequestException....
@kamushekdev7 жыл бұрын
А почему бы не использовать токен отмены вместо булевой переменной? :D
@ExtremeCode7 жыл бұрын
Я програмест, я так вижу
@CrafterMinecrafter5 жыл бұрын
11:10 ОН ГЕНИЙ!!!
@K14M2 жыл бұрын
Что делать если даже не устанавливается? Install-Package AngleSharp Install-Package : Совпадения для указанных условий поиска и имени пакета "AngleSharp" не найдены. Чтобы просмотреть все доступные зарегистрированные источники пакетов, исполь зуйте командлет Get-PackageSource. строка:1 знак:1 + Install-Package AngleSharp + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
@forcewillbewithyoualways31167 жыл бұрын
Спасибо!
@nikitanikitenko53387 жыл бұрын
Просто лучший!
@yah90114 жыл бұрын
Мудак он.
@sdfsdfgs8 жыл бұрын
А чё видео по удаляли?(была же годнота)
@НиколайНиколаев-ю6п8 жыл бұрын
решили, что не соответствует новому формату. Если соскучился по старым видосам, можешь найти их в нашей группе в вк.
@neuro_kurwa2 жыл бұрын
❤
@xbmusics3 жыл бұрын
Проблема с выведение данных в ListBox... У кого существуют из мимо проходящих такая проблема?
@cyrilk43386 жыл бұрын
Спасибо !!!
@blt_r3 жыл бұрын
А на кой хер эта дичь с LINQ нужна? Смысл QuerySelectorAll в том, что он работает как querySelectorAll из js, то есть можно передать туда любой css селектор. QuerySelectorAll("a.post__title_link") вернёт тебе все елементы "a" с классом "post__title_link"
@SerGasparyan6 жыл бұрын
Ахах сука два часа смотрел все повторял писал то да се и на паузы ставил а он в конце плять - ну кодец то я оставлю )))) Ну спасибо плять)
@nixhalla3uk276 жыл бұрын
Ну если ты как даун, просто всё переписываешь и не учишься, то зачем вообще смотреть было ?