Делаем парсер HTML на C#

  Рет қаралды 159,371

ExtremeCode

ExtremeCode

7 жыл бұрын

Всем привет! В этом видео уроке мы сделаем HTML парсер на C#.
► ► ► ► ► ► ►
Проект bit.ly/2m70LtE
► ► ► ► ► ► ►
C# в Unity bit.ly/2lrwIdN
► ► ► ► ► ► ►
C# для студентоты bit.ly/2ld0xka
► ► ► ► ► ► ►
C# для маленьких и тупых: bit.ly/2lmEtR4
► ► ► ► ► ► ►
VK: extremecodetv

Пікірлер: 185
@TakuatChanel
@TakuatChanel 5 жыл бұрын
Спасибо, хоть ролик и идет 20 минут, но я потратил на его просмотр около 4 дней вникая в интерфейсы, обобщения и прочее, узнал много полезного вообщем)
@trueyolu1906
@trueyolu1906 7 жыл бұрын
Большое тебе спасибо за видео. Это моё первое видео, которое я смотрю на твоём канале, и оно очень сильно меня радует. Обязательно подписываюсь! :)
@sierraww2
@sierraww2 6 жыл бұрын
Чувак ты самый лучший!!!! Удачи тебе во всем!
@johnwalker1232
@johnwalker1232 7 жыл бұрын
Спасибо за видео, давно его ждал. Отличный канал!
@user-zc4fi3kl7l
@user-zc4fi3kl7l 6 жыл бұрын
Парни, респект. Отличный видос. С удовольствием повторил, многому научился.
@victorpolyakov3031
@victorpolyakov3031 2 жыл бұрын
Черт, я чувствую себя умным! Я понимаю, что тут происходит! Продолжай выпускать такие простые ролики))
@serios7149
@serios7149 6 жыл бұрын
Ждем вторую часть)
@stanislavhrytsyshyn1732
@stanislavhrytsyshyn1732 7 жыл бұрын
Спасибо, хорошая работа парень!
@dimakom2726
@dimakom2726 5 жыл бұрын
Мудрено, но понятно) Лукас!
@oleksandrshmalko626
@oleksandrshmalko626 5 жыл бұрын
Дядечка айПро , респект тебе от английского комьюнити и уважение от пацанов , помог
@Independent19c
@Independent19c 7 жыл бұрын
вау,вот это оперативно только бахнул вопрос. на трансляции про парсер и вуаля) класс спасибо!Лайк жирнющий!
@AlexM-gn7bp
@AlexM-gn7bp 7 жыл бұрын
А вообще спасибо за видео, хороший пример наглядного использования интерефейсов да еще и обобщенных
@xeleos
@xeleos 3 жыл бұрын
У HtmlParser уже нет такого метода ParseAsync, теперь он называется ParseDocumentAsync
@andrewhkh23
@andrewhkh23 3 жыл бұрын
Благодарю дружище помог)
@nellaiiiii
@nellaiiiii Жыл бұрын
HttpParser не находит, не знаешь в чем проблема?
@Ramzes646
@Ramzes646 7 жыл бұрын
iPro, большое спасибо. Продолжай!
@vladisslavss
@vladisslavss 2 жыл бұрын
Ты просто лучший!) После тяжелого рабочего дня твои видосики словно бальзам!)
@milovidov42
@milovidov42 6 жыл бұрын
До конца еще не досмотрел но вот комментарии автора просто чумовые! )
@santiago1488
@santiago1488 5 жыл бұрын
братик, спасиб от души душевно в душу +лайк +подписка
@stepanzvarich6699
@stepanzvarich6699 6 жыл бұрын
Спасибо) Очень помог)
@nikbrons9786
@nikbrons9786 7 жыл бұрын
Было бы шикарно увидеть этот парсер, но в обертке MVC/MVP или MVVM)
@user-py8fz4us6h
@user-py8fz4us6h 3 жыл бұрын
Молодец, шо тут сказать, юмор прикольный)
@kenguru1941
@kenguru1941 6 жыл бұрын
Может раньше и работало, но сейчас в классе HtmlLoader нужно в строке url = $"{settings.BaseUrl}/{settings.Prefix}/"; убрать один слеш между скобок. Вот так - url = $"{settings.BaseUrl}{settings.Prefix}/"; Иначе будет парсить на одной странице.
@intsyn
@intsyn 5 жыл бұрын
То чувство когда начинаешь понимать что такое интерфейсы, как их реализовывают ...
@TheShadow0197
@TheShadow0197 6 жыл бұрын
Спасибо! Использую в своем проекте =)
@artursveshnikov7668
@artursveshnikov7668 3 жыл бұрын
Сделал на .net core 3.1 буква в букву, всё отлично работает.
@Alpaha92
@Alpaha92 6 жыл бұрын
Отличный видос) Жаль, что парсер не подойдёт для тех, кто узнаёт о количестве страниц из пагинации, к примеру :)
@snakelivegames821
@snakelivegames821 5 жыл бұрын
Как же ты классно это записал, лайк тебе за креативность и полезность информации. Спасибо
@user-yf9wd9po6h
@user-yf9wd9po6h 6 жыл бұрын
Давай вторую часть! =)
@user-zu6hg3un6d
@user-zu6hg3un6d 7 жыл бұрын
Блин,круто))
@Abo56Volo
@Abo56Volo 6 жыл бұрын
а я использую Selenium для этих целях. Парсить через CSS либо XPath. Удобно, когда надо парсить защищенного текста.
@geek__3743
@geek__3743 7 жыл бұрын
Привет! Помнишь давным давно, вы писали парсер proxy?(Кто помнит и видел ставьте лайк ;)) Так вот, не мог бы ты запилить видосик про proxy checker. Выручи плиз)). P.S. Я думаю в тему "C# - Туториалы" норм будет!
@bad_jaguar
@bad_jaguar 6 жыл бұрын
Geek_ _ присоединяюсь
@apdgslfhsodbna
@apdgslfhsodbna 5 жыл бұрын
Geek_ _ , ай ай ай ))))
@user-ki2qf9zu5f
@user-ki2qf9zu5f 6 жыл бұрын
Поделитесь пожалуйста Где можно почитать описание библиотеки "AngleSharp" для парсера и в видео вы говорили что есть где то код на исходник но я его не нашел . С уважением IVI.
@user-fm4ni2mc8j
@user-fm4ni2mc8j 5 жыл бұрын
Пиздатый код. Пиздатое ооп. Пиздатый парсер
@alisher.sabirov
@alisher.sabirov 6 жыл бұрын
Сделай видео где можно было парсить более сложные вещи бро! Спасибо
@gevamain1751
@gevamain1751 4 жыл бұрын
И вот уже почти 2020 год, а второй части так и нет(( за слова не отвечаешь ска!!!(тип агро)
@AzizjanAyupov_leo
@AzizjanAyupov_leo 3 жыл бұрын
А он разве говорил за вторую часть?
@user-oc5kb1nc3i
@user-oc5kb1nc3i 3 жыл бұрын
@@AzizjanAyupov_leo говорил 23:41
@AzizjanAyupov_leo
@AzizjanAyupov_leo 3 жыл бұрын
@@user-oc5kb1nc3i и правда!
@koshatec
@koshatec 4 жыл бұрын
Фу фу фу за WF. Кодинг с юмором мне заходит. Лайк, подписка
@forcewillbewithyoualways3116
@forcewillbewithyoualways3116 7 жыл бұрын
Спасибо!
@apple9943
@apple9943 Жыл бұрын
Спосибо тебе, дядюшка IPro
@milovidov42
@milovidov42 6 жыл бұрын
Досмотрел до конца все супер спасибо пиши есче!
@SuleimanVatrushkin
@SuleimanVatrushkin 5 жыл бұрын
Нихуя не понял, но очень интересно!
@alexandrsharp920
@alexandrsharp920 3 жыл бұрын
Какой клиент лучше юзать для парсинга ? http или webclient ?
@collesssqwer1673
@collesssqwer1673 4 жыл бұрын
я конечно не эксперт да и видео уже попахивает "актуальной" информацией но на моменте 6:34 разве не лучше ли было использовать Select, (и выбрать нужное свойство вместо того чтобы всё в лист через цикл записывать), а потом сразу же вызвать метод ToArray(), или это такой High Level стёб который слишком крут для меня ?
@bad_jaguar
@bad_jaguar 6 жыл бұрын
Всё аккуенно понятно. Завтра попробую пильнуть. С формами ещё не работал правда, но разобраться можно
@mikedastro2930
@mikedastro2930 5 жыл бұрын
что то пошло не так в Parser Worker в вызове метода //// короче var htmlparser = new HtmlParser(); var doc = await htmlparser.ParseDocumentAsync(нет ParseAsync() (( чем его заменить ))(source.ToString(),System.Threading.CancellationToken.None); var result =Parser.Parse(doc);
@user-jb4nz2xp4c
@user-jb4nz2xp4c 4 жыл бұрын
помог. очень помог. не знаю, почему другие с такой же проблемой не столкнулись
@sp1ne2104
@sp1ne2104 4 жыл бұрын
так пакеты обновляются постоянно, методы изменяются, тут либо использовать старую версию как у автора или читать документацию
@user-yi7mq7fd1c
@user-yi7mq7fd1c 4 жыл бұрын
у меня при создании экземпляра HtmlParser падает, пишет: "Additional information: Не удалось загрузить файл или сборку "System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" либо одну из их зависимостей. Не удается найти указанный файл." Хотя я воспользовался подсказкой и все красные подчеркивания убрались. Нагуглил что то про добавление в конфиг этого: но не помогло, ошибок нет, но падает
@Algok17
@Algok17 4 жыл бұрын
Крутяк! Давно хотел научиться парсить сайты и тут на этот урок наткнулся. Всё понятно объясняешь, красиво кодишь и шутеички в меру. Снимаю шляпу, качаю проект.
@Algok17
@Algok17 4 жыл бұрын
Сразу не запустилось. Нужно обновить AngleSharp и перед отправкой запроса в строке var response = await client.GetAsync(currentUrl); выполнить ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
@Algok17
@Algok17 4 жыл бұрын
В идеале бы @ExtremeCode мой пулл реквест принял - там всё готово уже.
@cyrilk4338
@cyrilk4338 5 жыл бұрын
Спасибо !!!
@TOPCHANNELSTOP
@TOPCHANNELSTOP 2 жыл бұрын
Тэк будет вторая часть?))
@yaroslavkolyada6914
@yaroslavkolyada6914 8 ай бұрын
async void это не преступление? для abort не логичнее ли использовать CancelationToken?
@gilman2056
@gilman2056 7 жыл бұрын
Вот никуя не понятно, но один х интересно смотреть
@apdgslfhsodbna
@apdgslfhsodbna 5 жыл бұрын
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
@t3m8ch
@t3m8ch 4 жыл бұрын
А я понял только после самостоятельного прочтения на GitHub)
@valentinmolodtsov9955
@valentinmolodtsov9955 6 жыл бұрын
Спасибо, как ни странно, я большинство понял и вообще заебись представляешь пособие (интересно). А если серьезно, то через WebSockets как-то проще это делать, не очень понимаю зачем велосипед изобретать)
@yuriilitvin3306
@yuriilitvin3306 4 жыл бұрын
Давай 2-ю часть!!!!!
@johanesskrauseriii3798
@johanesskrauseriii3798 6 жыл бұрын
Ну вот опять. Видео 24 минуты идёт, а делаешь всё 2-3 часа, ибо надо загуглить все непонятные моменты.
@andreybondarev1956
@andreybondarev1956 4 жыл бұрын
ска, а их много ;)
@Drapiks
@Drapiks 7 жыл бұрын
лайк неглядя
@MegaSping
@MegaSping 7 жыл бұрын
спасибо, как раз что нужно для моего говно-парсера с моими копирайтами задумка та же, но придется еще научить открывать его страницы и жмакать на кнопки внутри них
@BoxaShu
@BoxaShu 7 жыл бұрын
давай продолжение.
@gloomkol
@gloomkol 7 жыл бұрын
ыПро, спасибо за C#! Мистя, а к тебе все еще остается один вопрос: Где C# ???
@testantestovich1698
@testantestovich1698 6 жыл бұрын
Спасибо за видео! Есть вопрос, если мне нужно вытянуть УРЛы изображений со всего, не с одной страницы а со всего сайта, это возможно? Можете помочь? УРЛ изображения находится здесь:
@anonimanonim1428
@anonimanonim1428 4 жыл бұрын
div[class='img'] на тобі селектор
@followtheculture8817
@followtheculture8817 6 жыл бұрын
Как научить парсер переходить по ссылкам и парсить данные дальше ?
@vadimzhuravskyi7222
@vadimzhuravskyi7222 Жыл бұрын
учус щас с++ и с# мне интересно если данные с сайта можно получить только с авторизацией как програмно сделать это? или нужен АПИ? мб есть у кого информация
@aivenwhite4611
@aivenwhite4611 7 жыл бұрын
Слушай, мне нужно сделать которая будет сравнивать файл на сайте с файлом на компе, т.е. проверять обновление файла. если он обновился, то заменить старую версию. может подскажешь чего или видос запилишь?
@geek__3743
@geek__3743 7 жыл бұрын
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, но я могу ошибаться
@leonid_konoplin
@leonid_konoplin 4 жыл бұрын
братуля, где вторая часть?
@andrmiw9
@andrmiw9 6 жыл бұрын
а что делать, если не нужен вообще префикс, например для вк? Я попробовал его убрать, не помогло(
@slivich
@slivich 5 жыл бұрын
А можете рассказать как из всей это информации вывести только нужное тебе в другое окно (по ключевым словам)
@norker43
@norker43 5 жыл бұрын
Хотел на основе этого кода забацать парсер lostfilm, который просто выводит названия из списка сериалов в listbox, но столкнулся с проблемой. Из-за того, что контент на странице генерируется динамически парсятся только первые 10 строк. Вот ролик о том как это делать, мне бы очень пригодился
@sp1ne2104
@sp1ne2104 4 жыл бұрын
посмотри тут: stackoverflow.com/questions/24130650/scraping-data-dynamically-generated-by-javascript-in-html-document-using-c-sharp или попробуй Selenium. Посмотри ещё CefSharp
@maksymo9917
@maksymo9917 6 жыл бұрын
когда вторая часть ?)
@maxbrain9205
@maxbrain9205 6 жыл бұрын
В конце, когда делаешь форму, невозможно что-то успеть разглядеть, если не жать постоянно паузу и не отматывать назад много раз. Так ведь придется еще раз смотреть этот отрывок после создания формы, чтобы послушать твою речь. Найс...
@AlexM-gn7bp
@AlexM-gn7bp 7 жыл бұрын
вопрос почему вы используете в классе ParserWorker в приватном методе Worker() - async void а не async Task? это же не метод обработчик события
@ExtremeCode
@ExtremeCode 7 жыл бұрын
Привет, тут все просто, грубо говоря, если необходимо дожидаться выполнения асинхронного метода через await, то делаем его тип Task, если не нужно - то не делаем, в нашем контексте этот метод просто работает в фоне, и информирует о завершении с помощью события, так что тип Task тут не используется
@AlexM-gn7bp
@AlexM-gn7bp 7 жыл бұрын
а экспеншны(теоретические если такоевые будут) куда будут вылетать?
@vladyslavromanov7039
@vladyslavromanov7039 6 жыл бұрын
Можно делать Task и не дожидаться его. Очень много тем есть на этот счет, мол почему лучше юзать Task, а не void (когда это возможно)
@Simon-tk8im
@Simon-tk8im 7 жыл бұрын
Все очень круто, а кто-нибудь парсер погоды делал из этого?
@artemadeev7444
@artemadeev7444 4 жыл бұрын
удалось сделать ? у меня одна страница на yandex.ru/pogoda/novosibirsk/details?via=mf#2 соответственно мне не нужен переход страниц и я застрял блин.
@yazimmaable
@yazimmaable 5 жыл бұрын
на 22 строке переменная типа string. присваиваете null.Разве по умолчанию она уже не равна null?
@user-yi7mq7fd1c
@user-yi7mq7fd1c 4 жыл бұрын
по умолчанию она = "" - (string.empty)
@nikitanikitenko5338
@nikitanikitenko5338 6 жыл бұрын
Просто лучший!
@yah9011
@yah9011 4 жыл бұрын
Мудак он.
@user-ty2nq6li7g
@user-ty2nq6li7g 2 жыл бұрын
Повторил за автором, 5 лет дали о себе знать, 20 ошибок....
@cockswell9076
@cockswell9076 4 жыл бұрын
3 раз смотрю, не могу понять, как он переходит на други страницы где берет текст для парсинга, подскажите пж
@user-wn9yc9od5n
@user-wn9yc9od5n 6 жыл бұрын
Не работает проект скаченный. Просит еще какие то пакеты. AngleSharp установлен Не подскажите? Visual studio 17
@user-xw2tk6lz6n
@user-xw2tk6lz6n 6 жыл бұрын
там маленькая опечатка, в одном из namespace написано Parser.Cor
@user-zc1qr2ek5f
@user-zc1qr2ek5f 7 жыл бұрын
Ммм...а зачем в HarbraParser.Parse надо было добавлять это все в лист да еще и циклом?
@noncredist
@noncredist Жыл бұрын
@MrSinn3r
@MrSinn3r 7 жыл бұрын
А у вас *ус отклеился* абстракции потекли
@user-lh1pc6yn7x
@user-lh1pc6yn7x 4 жыл бұрын
Как сделать чтобы отлавливал теги которые находятся в теге ? Он тупо не видит все что внутри этого тега , хотя то, что внутри так же подходит под параметры. Вот пример: Моя строка в классе "HabraParser" : var items = document.QuerySelectorAll("span").Where(x => x.ClassName != null && x.ClassName.Contains("q")); А вот кусок HTML кода, в котором есть строка, которая подходит под параметры выборки: .... Оглушает цель на 5 сек.. Действует только на замороженных противников. .... Но парсер не индексирует то, что находится в теге (в остальном все работает). Как заставить его индексировать внутри ? Не хочется брать целиком весь и регулярными выражениями выбирать все это.
@user-sq7bm3of3m
@user-sq7bm3of3m 7 жыл бұрын
чувак ты зэ бэст
@andriimilkevych1844
@andriimilkevych1844 3 жыл бұрын
Ау, где вторая часть? Со сложными примерами??? Уже 4 года прошло!!
@almazmusic
@almazmusic 4 жыл бұрын
Образцовый туториал по кодингу
@hooraypmcdesten
@hooraypmcdesten 3 жыл бұрын
>Делаем парсер >HTMLDocument Неплохо
@kem0n
@kem0n 6 жыл бұрын
Скачал и запустил проект, выкидывает HttpRequestException....
@fullboarduck5491
@fullboarduck5491 3 жыл бұрын
Кажется я не туда полез, мне сюда ещё рано(
@Coool
@Coool 7 жыл бұрын
Все клево но не очень жизнено. Если будет 500 с хером страниц - затрахаешься парсить. А многопоток без допиливания не завезти
@ExtremeCode
@ExtremeCode 7 жыл бұрын
Да не так уж и сложно, цикл Worker'а переделать на while, счетчик вынести в поле и синхронизовать увеличение lock'ом, в методе Start запускать нужное количество раз при помощи Task.Run, только в UI надо тоже при помощи инвоков синхронизовать вывод элементов
@user-us5nf6xh8r
@user-us5nf6xh8r 7 жыл бұрын
В реальных проектах на больших объёмах SAX parser выигрывает
@user-sk2bt9eu2w
@user-sk2bt9eu2w 4 жыл бұрын
не получается гугл парсить QuerySelectorAll без результатов. такое чуство что натыкаюсь на капчу и не видно никаких классов помогите
@andrewbonchuk450
@andrewbonchuk450 7 жыл бұрын
День добрый! Проблема с VS 17, нет консольного менеджера пакетов. Что за беда?
@andrewbonchuk450
@andrewbonchuk450 7 жыл бұрын
И в вид >> другие окна>> нет Package Manager Console. Гугл молчит.
@IndGam
@IndGam 6 жыл бұрын
устанавливай NuGet
@anonimanonim1428
@anonimanonim1428 4 жыл бұрын
Ну ви іздіваєтися, превратили один маленький клас, в цілий проект!
@AzizjanAyupov_leo
@AzizjanAyupov_leo 3 жыл бұрын
Классный туториал) Но зачем, а главное нахуя создавать property IsActive если всё равно его не используешь?))
@adhamkhaytbaev16
@adhamkhaytbaev16 2 жыл бұрын
а как ты файл создал??
@asmronuri
@asmronuri 7 жыл бұрын
Денди С:
@avalonex2971
@avalonex2971 Жыл бұрын
удивительно как человек предсказал это событие: 4:10
@lp8692
@lp8692 4 жыл бұрын
Айдно.
@sdfsdfgs
@sdfsdfgs 7 жыл бұрын
А чё видео по удаляли?(была же годнота)
@user-ws3ql9gw7g
@user-ws3ql9gw7g 7 жыл бұрын
решили, что не соответствует новому формату. Если соскучился по старым видосам, можешь найти их в нашей группе в вк.
@user-zs5og3sv6y
@user-zs5og3sv6y 6 жыл бұрын
4:09 чудная кнопка! а что если она не появилась?
@AzizjanAyupov_leo
@AzizjanAyupov_leo 3 жыл бұрын
Ctrl + .
@kamushekdev
@kamushekdev 6 жыл бұрын
А почему бы не использовать токен отмены вместо булевой переменной? :D
@ExtremeCode
@ExtremeCode 6 жыл бұрын
Я програмест, я так вижу
@Konstantin.Zharinov
@Konstantin.Zharinov 7 жыл бұрын
отлично работает, только бэйсурл поменять на habrahabr.ru/all ну и форму проскочил махом, так что чтобы воспроизвести ее тоже помучиться пришлось
@RosemiNext
@RosemiNext 3 жыл бұрын
Понимаю, что видос старинный, но! Парсер должен быть универсальным. Пользователь должен только ввести адресс страницы, а затем уже вибирать, что с этой страницы ему надо просто просмотреть , какую-то ссылку скопировать, что -то скачать, преобразовать страницу или запустить свой скрипт на ней. Парсер также должен быть удобен в плане работы с диском ПК. И боже упаси использовать Form... слишком старая технология. Хотя-бы WPF.
@mrmasterdan4629
@mrmasterdan4629 3 жыл бұрын
Мне нужно получить названия заголовков видео уроков, у меня тоже тег а, но нету свойства class, только href, а ты принимаешь заголовки с помощью class'a, можно ли использовать href вместо class?
@CrafterMinecrafter
@CrafterMinecrafter 4 жыл бұрын
11:10 ОН ГЕНИЙ!!!
@K14M
@K14M Жыл бұрын
Что делать если даже не устанавливается? 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
@GGamess
@GGamess 2 жыл бұрын
в ruby это несколько строчек.
THE MOST FREQUENT MISCONCEPTIONS ABOUT OOP
19:37
ExtremeCode
Рет қаралды 538 М.
Como ela fez isso? 😲
00:12
Los Wagners
Рет қаралды 33 МЛН
I Need Your Help..
00:33
Stokes Twins
Рет қаралды 157 МЛН
Can you beat this impossible game?
00:13
LOL
Рет қаралды 58 МЛН
Watermelon Cat?! 🙀 #cat #cute #kitten
00:56
Stocat
Рет қаралды 7 МЛН
Java vs C# (C Sharp). Что выбрать?
14:40
Sergey Nemchinskiy
Рет қаралды 239 М.
Есть только 3 ситуации для РЕКУРСИИ
10:03
Учим Python за 1 час! #От Профессионала
59:01
Хауди Хо™ - Просто о мире IT!
Рет қаралды 10 МЛН
Большие проблемы наследования в ООП
10:51
POST ЗАПРОСЫ - C#
21:23
Montece
Рет қаралды 10 М.
Como ela fez isso? 😲
00:12
Los Wagners
Рет қаралды 33 МЛН