Обучение парсингу на Python #2 | Парсинг сайтов | Выполняем заказ на фрилансе

Поделиться
HTML-код
  • Опубликовано: 15 май 2024
  • Обучение (Web-Scraping) веб парсингу на Python. В данном видео разбираем на практике работу с библиотеками requests и Beautifulsoup4. Научимся делать запросы, сохранять страницы, парсить из них нужную нам информацию и что немаловажно рассмотрим сохранение данных в файлы json и CSV формата, т.е в таблицы.
    🔥 Доступ в приват | Поддержать проект:
    boosty.to/pythontoday
    / pythontoday
    yoomoney.ru/to/410019570956160
    🔥 Telegram канал с к кучей ништяков и кодом из видео:
    t.me/python2day
    💰 Стать спонсором канала:
    / @pythontoday
    Таймкоды:
    00:00 - Интро
    00:31 - Описание проекта
    01:32 - Установка необходимых библиотек
    01:55 - Получение и сохранение главной страницы
    06:42 - Сохранение данных в JSON файл
    08:15 - Замена нескольких символов в строке
    10:50 - Получение заголовков таблицы
    12:38 - Запись заголовков в csv файл
    13:50 - Получение химического состава продуктов со страницы
    15:25 - Запись химического состава продуктов в csv файл
    17:43 - Создание списка и запись данных в json файл
    18:35 - Запуск парсера
    ****Ссылки****
    Дешевый/надежный сервер в Европе + СКИДКА 10%:
    vdsina.ru/?partner=858b36ud3p
    Хороший proxy сервис:
    proxy6.net/a/149995
    Обучение парсингу на Python #1 | Парсинг сайтов | Разбираем методы библиотеки Beautifulsoup
    • Обучение парсингу на P...
    Документация Beautifulsoup:
    EN: www.crummy.com/software/Beaut...
    RU: www.crummy.com/software/Beaut...
    Зарабатываем 7500р на фрилансе | Телеграм бот на aiogram | Парсинг динамического сайта
    • Парсинг на Python | За...
    Скачиваем интернет | Как скачивать файлы с помощью Python:
    • Как скачивать файлы с ...
    Работаем с Google Диск на Python:
    • Работаем с Google Диск...
    Парсинг криптобиржи | Торговый бот | API криптобиржи:
    • Парсинг криптобиржи | ...
    Python с нуля | if _name_ == '__main__' | Зачем? И почему нужно использовать
    • Python с нуля | if __n...
    Асинхронный парсинг на Python | Ускоряем код в 10 раз
    • Асинхронный парсинг на...
    Парсинг на Python | Подмена IP-адреса | Запросы через прокси
    • Парсинг на Python | По...
    Парсинг динамического сайта на Python + Telegram бот на AIOGram | Requests, AIOGram, API, JSON
    • Парсинг динамического ...
    Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг):
    • Пишем Telegram бота на...
    Плейлист по распознаванию лиц на Python:
    • Распознавание лиц | Fa...
    Плейлист по парсингу сайтов на Python:
    • Парсинг/Scraping
    Плейлист по Instagram боту:
    • Instagram Bot на Pytho...
    Плейлист по Linux для новичков:
    • Linux для начинающих
    ККод проекта на github:
    github.com/pythontoday/scrap_...
    И в telegram канале:
    t.me/python2day
    ****Соц.сети****
    Telegram: t.me/python2day

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

  • @PythonToday
    @PythonToday  3 года назад +33

    Таймкоды для вас:
    00:00 - Интро
    00:31 - Описание проекта
    01:32 - Установка необходимых библиотек
    01:55 - Получение и сохранение главной страницы
    06:42 - Сохранение данных в JSON файл
    08:15 - Замена нескольких символов в строке
    10:50 - Получение заголовков таблицы
    12:38 - Запись заголовков в csv файл
    13:50 - Получение химического состава продуктов со страницы
    15:25 - Запись химического состава продуктов в csv файл
    17:43 - Создание списка и запись данных в json файл
    18:35 - Запуск парсера

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

      А вы работаете на фрилансе ? И где вас найти если да ...

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

      @@andreychernov753 Извини, я не беру заказы. Не хватает времени. Если хочешь подискутировать, залетай в ТГ чат

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

      @@PythonToday а что с чатом, не могу там писать сообщения?

    • @andreyb.3465
      @andreyb.3465 2 года назад

      Спасибо за уроки, всё очень круто! Есть несколько вопросов: как не получить бан от сайта при скрапинге, как обходить блокировки, как парсить защищённые от скрапинга страницы и для каких задач стоит выбирать bs4, а для каких selenium?
      Эти темы будут затрагиваться в следующих уроках?

    • @andreyb.3465
      @andreyb.3465 2 года назад

      Ещё интересен такой момент: для чего ты сохраняешь промежуточные данные в файлы? Всё равно же ты их читаешь потом в память и оперируешь объектами в памяти. Нафиг они нужны, никак не пойму?)

  • @jarg0vsk1
    @jarg0vsk1 8 месяцев назад +13

    ДЛЯ ТЕХ У КОГО РАЗНАЯ ЕРЕСЬ, ИЛИ ПРОСТО БЕЛЫЙ ЭКРАН ВМЕСТО СИМВОЛОВ, пропишите в строке сохр файла (with open("index.html", "w")), encoding="utf-8", тоесть должнл получится with open("index.html", "w", encoding="utf-8") as file: .

  • @user-gn3zm4sx7w
    @user-gn3zm4sx7w 2 года назад +139

    13:50 В Windows в шапке в одной ячейке указаны через запятую - Продукт,Калорийность,Белки,Жиры,Углеводы. Чтобы разместить правильно по ячейкам указываем
    with open(f'data/{count}_{category_name}.csv', 'w', encoding='utf-8-sig') as file:
    writer = csv.writer(file, delimiter=';')

    • @user-jy9mr2ro8k
      @user-jy9mr2ro8k 2 года назад +3

      Здоровья тебе!!!

    • @ramismukhlisov652
      @ramismukhlisov652 2 года назад +1

      спасибо спаситель

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

      Это надо продвинуть в топ, нас, любителей винды, пока что еще много XD

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

      А у меня наоборот, с delimeter всё в одной ячейке.. без делиметер, всё ок.

    • @Kos37376
      @Kos37376 Год назад +1

      Спасибо, сам долго мучался с кодировкой. в итоге ответ нашел, но слова были не в своей колонке. Сейчас все ок! Здоровья тебе

  • @user-hs7mq8eo8h
    @user-hs7mq8eo8h Год назад +58

    Если использовать метод супа .select() вместо .find(), то можно существенно сократить код.
    Как пример, на 14:20 минуте видео, строка 80, вместо
    products_data = soup.find(class_='mzr-tc-group-table').find('tbody').find_all('tr')
    можно написать
    products_data = soup.select('.mzr-tc-group-table tbody tr')
    Метод .select() позволяет использовать синтаксис как в css, очень удобно

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

      Дельное замечание. Спасибо =)

    • @user-xs7xi6np8m
      @user-xs7xi6np8m 4 месяца назад +1

      У меня постоянно возникала ошибка:
      products_data = soup.find(class_="mzr-tc-group-table").find("tboby").find_all("tr")
      AttributeError: 'NoneType' object has no attribute 'find_all'
      твой совет помог мне её решить, спасибо

  • @m00nable
    @m00nable 2 года назад +56

    Вау, удивлен, что такой качественный материал лежит в открытом доступе. Огромное спасибо автору

    • @PythonToday
      @PythonToday  2 года назад +11

      Большое спасибо за поддержку! Рад что видео помогают.

    • @djonidep8941
      @djonidep8941 2 года назад +2

      автор реально гигант своего дела. Прям так все четко, все что нужно. Кайфанул с его видосов

  • @vivacuba1990
    @vivacuba1990 Год назад +1

    спасибо за труд и за то, что делишься своими знаниями...👍

  • @vert1750
    @vert1750 2 года назад +18

    Огромное спасибо за полезный материал! Вся теория и боевая практика за два коротких видео, потрясающе!

    • @PythonToday
      @PythonToday  2 года назад +4

      Спасибо большое за фидбэк! Рад что полезно и помогает 👍

  • @volodymyr861
    @volodymyr861 3 года назад +6

    Огромное вам спасибо, всё доступно, без воды ну и реальная практика! Продолжайте в том же духе!

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

    Кайф! Очень нравится стиль подачи, скорость. Спасибо!!!

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

    Спасибо
    очень круто объясняешь, с удовольствием посмотрю остальные видео на твоём канале

  • @dayf1987
    @dayf1987 3 года назад +12

    Спасибо за видео! Только начинаю, не везде до конца понимаю, но контент супер! На голову выше того что раньше смотрел

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

      Спасибо за фидбэк 💪

  • @user-iw2bv5ep8o
    @user-iw2bv5ep8o Год назад +1

    Большое спасибо за видео! Всё очень информативно, понятно, без воды и с кучей практики. С твоей помощью постепенно постигаю парсинг.

    • @PythonToday
      @PythonToday  Год назад +1

      Спасибо за поддержку! Рад что видео помогают!

  • @Worldofpc
    @Worldofpc 2 года назад +2

    Большое спасибо. До этого видео не мог даже связать заголовок и дату публикации через парсер. А тут целая таблица и все понятно. Отличная подача материала)

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

      Благодарю. Рад что полезно

  • @andranik8917
    @andranik8917 2 года назад +29

    Если столкнулись с проблемой, что в csv файле после каждой строки ставится пробел, используйте
    writer = csv.writer(file, lineterminator='
    ')

    • @ruslans8795
      @ruslans8795 2 года назад +3

      также можно добавить атрибут к открытию файла csv newline=""

    • @egorevstratov1094
      @egorevstratov1094 2 года назад +1

      спасибо!

    • @secorp-com-ua
      @secorp-com-ua 2 года назад +1

      У меня запятыми разделяет...

    • @RavCHICK1
      @RavCHICK1 Год назад +1

      спасибо! перерыл гугл, а ответ был под видео)

    • @user-yp9ix4wl1m
      @user-yp9ix4wl1m 11 месяцев назад

      Ответ в ТОП!

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

    Замечательно! Хоршая практика. Спасибо!

  • @GreekkAlex
    @GreekkAlex 3 года назад +2

    пересматриваю, еще раз спасибо за труды!👍👏

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

      Спасибо за фидбэк 💪

  • @aharito
    @aharito Год назад +16

    Класс! меня бесят видеоуроки, потому что в них плотность инфы 5%. Весь часовой урок можно изложить в полстраницы текста. А у вас - браво! По-моему, максимально возможная степень сжатия, причем не во вред усвоению. Благодарю, профессионально!

    • @PythonToday
      @PythonToday  Год назад +4

      Спасибо за фидбэк! Рад что полезно и интересно

    • @themelkiywey3485
      @themelkiywey3485 Год назад +1

      @@PythonToday Здравствуйте, а у вас есть уроки парсинга динамически подгружаемого контента?

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

      @@themelkiywey3485 возможно уже поздно, но у автора есть отдельный плейлист где он объясняет selenium

  • @semionsenchukov3391
    @semionsenchukov3391 3 года назад +122

    Для владельцев "прекрасной" винды. Если в Excel вместо русских букв выводится тарабанщина, а encoding="utf-8" не помогает, как это было у меня, то может помочь encoding="utf-8-sig"

    • @elmasya
      @elmasya 3 года назад +5

      Спасибо)

    • @DS-wg5nc
      @DS-wg5nc 2 года назад +3

      Спасибо, выручил.

    • @alesiayakimovich7441
      @alesiayakimovich7441 2 года назад +3

      Спасибочки!!!

    • @apelsintv9486
      @apelsintv9486 2 года назад +3

      огромнейшее спасибо

    • @ahil7800
      @ahil7800 2 года назад +1

      Спасибо. Заработало.

  • @AntonHHO
    @AntonHHO 9 месяцев назад +1

    Было очень интересно пройти этот урок с вами)) Благодарю!

    • @PythonToday
      @PythonToday  9 месяцев назад +1

      Благодарю за фидбэк!

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

    Спасибо большое! Очень годный контент!!!

  • @gorox_s_shlyapoy
    @gorox_s_shlyapoy 2 года назад +1

    Огромное спасибо! По вашим урокам учится весело!

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

      Благодарю за фидбэк!

  • @andreykonovalov9288
    @andreykonovalov9288 2 года назад +6

    Во-первых, спасибо и низкий поклон! Объяснение просто потрясающее, четко, лаконично, просто и доступно!
    Во-вторых, у тебя потрясающие педагогические данные! Очень круто, что ты нашел ему применение и очень надеюсь, что твой труд не проходит бесследно и для тебя в том числе, потому что для зрителя, особенно новичка в деле - все очень здорово и доступно!
    Желаю развития твоему каналу, а тебе неиссякаемой энергии на довольно не простое дело - обучение других людей!
    СПАСИБО!

    • @PythonToday
      @PythonToday  2 года назад +1

      Большое спасибо за такой фидбэк и поддержку!

  • @dmitriyzemlemerov9592
    @dmitriyzemlemerov9592 6 месяцев назад

    Автор крут, обучающее видео на высоком уровне👏👏👏 Спасибо 🤝

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

    Спасибо большое за контент! Ты прекрасно объясняешь и описываешь. Большое тебе за эт спасибо!

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

      Большое спасибо за поддержку!

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

    Спасибо отлично и видно что из опыта сразу дает как не попасть в некоторые не приятные моменты!

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

      Спасибо за фидбэк

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

    Огромное спасибо, очень понравилась подача, смотрю вас уже 3 месяц если не больше, подача великолепная, других специалистов по python смотреть скучно, а у вас прям, тянет смотреть дальше и дальше, не останавливаясь.
    Поставил лайк

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

      Большое спасибо за фидбэк и поддержку!

  • @Ocinu309
    @Ocinu309 3 года назад +9

    Великолепный плейлист! Спокойный уравновешанный голос, грамотные объяснения без лишней воды и пробелов. Автор, так держать! От себя: хотелось бы отдельное видео по обходу блокировок на сайтах типа букмекерских кантор или бирж

    • @PythonToday
      @PythonToday  3 года назад +3

      Дружище благодарю за фидбэк. А какие там например блокировки? Недавно парсил теннисные события, вроде прошло как обычно.

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

      @@PythonToday Сложно сказать, я только начинаю писать свои парсеры. Меня быстро блокировали, думаю что-то не так было с таймингами и headers

    • @PythonToday
      @PythonToday  3 года назад +2

      Кинь сайт, только домен с которым работал, например stavkinasport, а то комент заблочат. Посмотрю

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

      @@PythonToday parimatch

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

    Благодарю за видео. Очень доходчиво и полезно

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

      Благодарю за поддержку!

  • @edelicht7932
    @edelicht7932 9 месяцев назад +1

    Супер контент! Второй час ночи, но таки получилось спарсить расписание и маршрут местных автобусов, опираясь на данное видео :)
    Большое спасибо!

    • @PythonToday
      @PythonToday  9 месяцев назад +2

      Рад что полезно! Спасибо за фидбэк!

  • @keepo3867
    @keepo3867 11 месяцев назад +1

    Огромное спасибо за твой труд! Взращиваешь будущих программистов!

    • @PythonToday
      @PythonToday  11 месяцев назад +1

      Большое спасибо за фидбэк!

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

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

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

      Спасибо за фидбэк!

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

    отличный урок! спасибо за гайд!👍🤘

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

      Благодарю за фидбэк 💪

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

    Чувак ну прям годнота!! Огромный респект за такой контент. То что я хотел и вовремя.

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

      С двух аккаунтов подписался ))

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

      Большое спасибо за фидбэк и поддержку!

  • @prosto_komputer
    @prosto_komputer 7 месяцев назад +1

    🌟 Отличное видео!
    👏 Посмотрел и сделал всё по инструкциям - результат великолепен! 🎉 Это идеальный гид для новичков и не только. 📚 Всё понятно и доходчиво объяснено. 👍
    Данные у меня на компе. 🖥 😊

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

    Как всегда инфа супер!)

  • @DonNwN
    @DonNwN 9 месяцев назад +3

    3:42 У меня возникла проблема с Юникодом. Ошибка была что-то вроде "'charmap' codec can't encode characters"
    У кого такая же то вот, лайфхак:.
    Вместо привычного with open("name", "*") Нужно обозначить ещё и кодировку with open("name", "*", encoding="utf-8")
    После этого html файл записался без проблем

  • @user-ge9wn2tu9l
    @user-ge9wn2tu9l 3 года назад +2

    Заочно лайк!

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

    Крутой видос! Подчерпнул одну мысль, спасибо)

  • @user-LvSerg777
    @user-LvSerg777 10 месяцев назад +1

    Автору огромное спасибо! Клевая подача и крутой контент!

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

    Интересно! Благодарю

  • @user-je7lo6qm5s
    @user-je7lo6qm5s 2 года назад +3

    Огромное спасибо за проделанную работу,видео очень полезное.Имеется лишь один вопрос:почему при работе с
    проблемной страницей(danon)из класса "uk-alert uk-alert-danger uk-h1 uk-text-center mzr-block mzr-grid-3-column-margin-top" вы выделяете из него только "uk-alert-danger"? 15:55

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

    Автору огромное спасибо. Контент супер.

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

      Большое спасибо за поддержку!

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

    Круто, информативно, интересно. Моё почтение, сударь!

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

      Большое спасибо за фидбэк и поддержку!

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

    ОГРОМНЕЙШЕЕ СПАСИБО ВАМ!!!

  • @keills_
    @keills_ 3 года назад +105

    Потратил минут 10 на то, чтобы разобраться с проблемой не распознавания символа ('charmap' codec can't decode byte
    ,такая вот ошибка).Проблема появлялась,когда мы считывали из сохраненного файла index.html информацию о ссылках. (Перед этим была проблема с кодировкой, решение нашел ниже) И вот в видео мы убираем параметр "w",и я в своем случае encoding = "utf=8",и программа останавливалась на считывании информации из файла. Решение простое - оставить encoding = 'utf-8'. У меня Win10,может это кому-то поможет.

    • @PythonToday
      @PythonToday  3 года назад +7

      Молодцом, что сам разобрался 👍

    • @user-ig1hf8fb7r
      @user-ig1hf8fb7r 3 года назад +13

      Лучше бы везде добавлять encoding="UTF-8-sig", таким образом дополнительно прописывая кодировки c BOM, потому как чтение в excel полученной информации без BOM будет кривое.

    • @dmitrybludchy3350
      @dmitrybludchy3350 3 года назад +3

      Спасибо тебе, мужик! Очень выручил!

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

      @@user-ig1hf8fb7r ну мне в excel просто не приходилось ещё сохранять, в основном только в json

    • @dmitryh5818
      @dmitryh5818 2 года назад +3

      Спасибо очень выручил! Я пол дня искал как решить данную проблему, потому что когда кодировки не было то на 8 итерации charmap выскакивал, а если была тогда символы не понятные были вместо текста, а как поставил encoding="utf-8-sig" и то и то мгновенно отпало. Больше никаких проблем и все читается)))

  • @ftorc4839
    @ftorc4839 2 года назад +6

    Наверно поздно, но можно вопрос:
    когда вы сохраняли req.text в файл html, каким образом там еще и css сохранился?
    И еще: после request кириллица, в виде ascii симболов (кажется). Я так понял это проблема с кодировкой, но вот как ее исправить не нашел. Можете, пожалуйста, подсказать?
    Спасибо!

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

    Спасибо за полезный урок. Скоро подпишусь на патреон

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

      Благодарю за фидбэк!

  • @user-gt4oz9ep2w
    @user-gt4oz9ep2w Год назад +1

    Очень классный и полезный канал) вы молодец!

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

      Большое спасибо за поддержку!

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

    Круто. От красоты кода словил эстетическое удовольствие.

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

      Спасибо за поддержку) Да прям, код очень далек от идеального, учусть только

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

      @@PythonToday да, но эта тема ide, оно очень приятная. и да, вести документацию и оборачивать все в функции надобно бы, но я думаю, в демонстрационных видео ты это специально опустил).

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

    спасибо за видео!

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

    Очень полезно! Спасибо.

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

    Прохожу не первое видео, все супер! Держу в курсе))

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

      Спасибо за поддержку! Рад что полезно 👍

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

    Отличный урок, спасибо !

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

      Благодарю за фидбэк!

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

    Спасибо тебе огромное ХОРОШИЙ ЧЕЛОВЕК

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

      Спасибо за фидбэк!

  • @AtomNuclearChannel
    @AtomNuclearChannel 3 года назад +2

    Все круто и классно, подробно и понятно 👍
    Вот только погинация не рассмотрена) жду новых видео по парсингу,
    Спасибо за проделанную работу

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

    За 20 минут этого видео решились все проблемы с моим парсером) 3 дня голову ломал. Низкий поклон автору)

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

      Спасибо за фидбэк! Рад что видео полезны)

  • @user-vg4kj7mx2z
    @user-vg4kj7mx2z 3 года назад +9

    Благодарю за видео ! Каждый шаг познавателен и всё понятно!
    У меня почему то csv получился с пустыми строками между каждой итерацией

    • @PythonToday
      @PythonToday  3 года назад +2

      Спасибо за фидбэк. Проверь отступы при сохранении. Думаю где то вышел из цикла.

    • @user-gw3lh3pl3y
      @user-gw3lh3pl3y 3 года назад +11

      Тоже была такая проблема. Добавил во время записи csv параметр newline="" . Пустые строки пропали.
      with open(f'data/{count}_{categorie_name}.csv', 'a', encoding="UTF-8-sig", newline=''") as file:
      Отдельное спасибо комментаторам, решение всех проблем нашел под видео.
      PS: Уроки супер!

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

      @@user-gw3lh3pl3y эх жаль не углядел сразу ответа, и пошел искать в интернеты)), много времени конечно не заняло, но все же мог бы и не тратить его на поиски 😁

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

    Супер!! Все работает! Я тебя обожаю

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

      Спасибо за фидбэк!

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

    Очень интересно!

  • @devlog_channel
    @devlog_channel 6 месяцев назад

    Музыка на фоне просто топ, 4 раза за видос поспал!

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

    Годнота.пошел повторять.

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

    Всё по делу, спасибо )

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

      Благодарю за фидбэк 👍

  • @bilorus-marschak
    @bilorus-marschak Год назад +2

    Спасибо за видео! И такой вопрос: как решать проблемы с появлением капчи при парсинге сайтов?

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

    хочется сказать автору просто ОГРОМНОЕ СПАСИБО)))
    только осваиваю парсинг и благодаря Вашим роликам это выходит делать)
    делал параллельно с Вами
    сначала пытался сам, если что то не понятно то смотрел дальше
    у Вас 20 минут у меня часа 2-3 ибо первый раз этим занимаюсь
    я так понимаю в этом деле надо тоже набить шишки и опыт)

    • @PythonToday
      @PythonToday  Год назад +1

      Опыт лучший учитель) Всё будет, главное практика! Большое спасибо за фидбэк и поддержку!

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

      То. что в видео показывается за 10-20 минут, за этим стоит несколько часов, порой десятки и дни работы. Так что всё окей, успехов в начинаниях!

  • @dalerkhalilov9440
    @dalerkhalilov9440 3 года назад +4

    Отличное видео!
    Про Scrapy хотелось бы уроков)

    • @MrOleg194
      @MrOleg194 3 года назад +2

      Были бы все подобные темы подобного качества. Напротив, получается, как алмазы в кучах дерьма искать нечто подобное. В этой теме все четко.

  • @LAIKSTER
    @LAIKSTER 3 месяца назад

    Лучший❤

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

    Хорошая подача и всё понятно. Даже понятно что мне не хватает практики с базовыми вещами. То есть когда написано в видео - всё понятно, а как автор до этого догадался - темнота. И в конечном результате если возьмусь сам за проект - не буду знать с чего начать))))) Огромное спасибо и удачи в развития канала

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

      Благодарю за фидбэк!

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

    благодарю. видео мега полезное!

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

      Видео норм, но я вот остановился на этапе получения кода страницы)
      Подумал что не пускает потому что я из Украины, и накатил уже прокси перед основным блоком кода...Результата нету(мб связать надо как то).
      Вообщем занимательно, от одного к другому метаюсь , мб что то и сделаю)
      upd* Да дело с прокси, сейчас буду привязывать его)

  • @valko5174
    @valko5174 2 года назад +6

    У кого файл csv заполняется с пустыми строками, добавьте атрибут lineterminator в writer:
    with open(f"categories\{mod_category_name}.csv", "a", encoding="cp1251") as file:
    writer = csv.writer(file, lineterminator="
    ")

  • @azatuuluaman
    @azatuuluaman 2 года назад +8

    Второе ваше видео которую активно просматриваю и разбираю на части для себя. Благодаря вам, пишу тестовое задание от компании в которую хочу устроиться на стажировку! Дедлайн через три дня, 70 % работы сделано с вашей помощью! Просто знайте, что вы вносите важный вклад для всех начинающих программистов. Бишкек, Кыргызстан.

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

    Спасибо.

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

    Спасибо

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

    Супер!

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

    Спасибо! Даже для нубаса все понятно.

  • @user-no-surname
    @user-no-surname 7 месяцев назад

    Прекрасный контент. Спасибо.
    Возможно я не понял или вы оговорились на 16:30.
    Как функция len() по отношению к нашему словарю, да и вообще чему угодно, может вернуть
    что-либо кроме целочисленного значения типа int ?

  • @user-vs2mi9qo9f
    @user-vs2mi9qo9f Год назад +2

    Здравствуйте. Код работает, но в файле экселя все данные записываются в первый столбик. Можно ли это исправить?

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

    Чувааак, это прям очень клево.

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

    годнота, огромное спасибо вам!

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

      Благодарю за фидбэк и поддержку!

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

    Отличный урок!У меня все получилось)))! Ура)! Большое вам спасибо! Чаще всего пришлось сталкиваться с проблемами кодировки текста(юникоды), в итоге везде в строчках открытия файла прописал encoding= "utf-8" и в настройках редактора кода (sublime text)на вход и на выход также поставил UTF-8.

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

      Благодарю 💪

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

      Спасибо, начал тупить с победой над кривой кодировкой. encoding= "utf-8" на вин 10 выручил.

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

    спасибо за работу

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

      Спасибо за фидбэк!

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

    Таймкод:
    3:18 - Сохранение данных в html файл
    5:05 - Данные которые будем собирать
    5:35 - Вывести список данных через for
    5:54 - Текст и ссылка.get("Атрибут")
    6:37 - [текст] = ссылка -> текст: ссылка
    6:50 - Сохранение данных в json

  • @user-mh4ln1up1l
    @user-mh4ln1up1l 11 месяцев назад +1

    Благодаря этому видео спарсил свой первый сайт по каталогу юнитов любимой игры. Код причем оказался гораздо более объемный (и корявый) за счет некоторых неочевидных факторов, как отсутствие классов у ссылок, различающиеся параметры таблиц (заголовки к таблицам и инфа в них то была, то нет. Сайт в этом плане был написан довольно неграмотно), но в итоге удалось таки получить заветные данные в двух форматах. За это Спасибо автору, обязательно изучу остальные видео по парсингу!

    • @PythonToday
      @PythonToday  11 месяцев назад

      Молодцом, рад что полезно!

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

    Спасибо огромное вам!!!!

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

      Благодарю за фидбэк!

  • @detya2597
    @detya2597 8 месяцев назад

    @PythonToday, как у вас получается текст в csv выравненный по самому длинному слову?

  • @user-nm5uh3ip2c
    @user-nm5uh3ip2c 3 года назад +4

    Очень крутой видос. Запиши пожалуйста парсинг многостраничных сайтов, которые с перелистыванием страниц снизу, я имею ввиду.

    • @PythonToday
      @PythonToday  3 года назад +2

      Благодарю за фидбэк. Но ведь это прям просто если пагинация на странице. Как будет такой заказ, сразу выложу. Сегодня будет видео с динамическим сайтом

  • @intmang
    @intmang 2 года назад +2

    Очень Круто! Базовые знания Python, и уже можно делать то, за что дают деньги. Для новичка очень круто!!!

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

      Благодарю за фидбэк!

  • @boomchik1066
    @boomchik1066 10 месяцев назад

    очень сильно помогло, спасибо огромное!!!!!!!

    • @PythonToday
      @PythonToday  10 месяцев назад

      Рад что полезно, спасибо за фидбэк!

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

    ты шикарно объясняешь , есть в планах продолжать ликбез по питону)))

    • @PythonToday
      @PythonToday  3 года назад +2

      Спасибо 👍 В планах куча практики и продолжение плейлиста для новичков, к сожалению совсем не хватает времени на всё сразу

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

      @@PythonToday буду ждать отличный канал))

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

    Спасибо за ваши видео, всегда смотрю с интересом, учусь, пробую. Списал ваш код, после чего немного доработал используя pandas. Хотелось бы поделиться, обязательно попробуйте если не знали о таком методе( надо будет установить, импортировать pandas
    table_head = pd.read_html(ссылка) - вытаскивает таблицы целиком со страницы, сохраняя их в списки, но таблицы должны быть в теге table
    table = table_head[0] - выбираем нужную таблицу из списка
    table.to_csv(f'data2/{count}_{category_name}.csv' - сохраняем в csv
    )) Надеюсь кому нибудь пригодиться)))

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

    Добрый день, спасибо большое за отличный курс!
    Подскажите, пожалуйста, с чем может быть связано при запуске кода появление всплывающего окна: "Copy Authorization URL to Clipboard"? Видимо я в самом начале, что-то не то сделал с авторизацией к сайту?...

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

    Можно ещё soup ом добраться до таблицы и потом пандасом прочитать, есть метод read_html() и получится сразу готовый датасет, с которым можно дальше работать.

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

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

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

    Спасибо за ваш контент! Канал просто отличный!
    P.S. Думаю ещё один хороший способ как заменить несколько символов в строке на знак нижнего подчёркивания это использование re.sub из модуля re.

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

      А именно: print(re.sub(r"\s+|,|-|'", "_", category_name))

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

      Большое спасибо за фидбэк и за код!

    • @Lancer907
      @Lancer907 2 года назад +1

      Но если стоят рядом запятая и пробел, то два подряд подчёркивания будет

  • @Mersin-video
    @Mersin-video 3 года назад

    Отличное видео!

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

    Мой первый код, в котором не было ошибок =) и я не тратил время на поиски ненужного!

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

    Спасибо за урок. Пару недель начал изучать Python и тут как раз подвернулась задача по парсингу. Правда на 7ой минуте получилась абра-кадабра ))
    Нашёл на просторах, что нужно было добавить encoding='utf-8' в with open

    • @halcyon-s
      @halcyon-s Год назад

      Спасибо! Была та же ошибка )

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

    Вариант замены нескольких символов в строке:
    var = 'some text'
    for i in ['s', 't', '42', ]: var = var.replace(i, '*')
    print(var) # output: '*ome *ex*'

  • @1Warmetallic1
    @1Warmetallic1 Год назад +1

    парень, ты колдуешь

  • @severbit
    @severbit Год назад +1

    У кого проблемы с кодировкой/в index..html вместо текста знаки вопроса
    with open("index.html", 'w', encoding="utf-8") as file:
    file.write(src)

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

    Для замены unicode-символов в строке можно использовать библиотеки "python-slugify" или "awesome-slugify"