Парсинг простых сайтов на Python: BeautifulSoup, requests

  Рет қаралды 11,936

The ParseHub

The ParseHub

Күн бұрын

В этом видео я покажу как можно собрать информацию с простых сайтов с помощью BeautifulSoup и requests, писать будем как всегда на Python.
BeautifulSoup - это замечательная библиотека, которая значительно ускоряет и упрощает сбор данных, те кто занимаются парсингом просто обязаны уметь ею пользоваться
Исходный код:
github.com/Duff89/glavsnab_pa...
Приватные прокси за 99 руб: proxy6.net/?r=54545
Купон на скидку: SdSq8wCwJA
proxyline.net/?ref=212089
Купон для скидки: EYvdLcmgSy4tUcBP5uk
Поддержать канал:
yoomoney.ru/to/410014382689862
или
2204 1201 0103 5539
Контакт для связи: sergeichopolovich1989@gmail.com
00:00 Вступление
01:25 Что такое BeautifulSoup
02:00 Изучаем сайт для парсинга
03:03 Установка зависимостей
04:17 Пишем код
24:44 Итоговый запуск
#python #parsing #scraping #request #html #интернетмагазин #beautifulsoup #парсинг

Пікірлер: 97
@user-ld3yu9uy7v
@user-ld3yu9uy7v 9 ай бұрын
Спасибо за полезный контент, учусь по твоим видео, про датаклассы очень информация помогла!)
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо! Датаклассы и правда очень крутая штука, особенно при передаче данных, гораздо меньше шансов ошибиться
@LifterAndy
@LifterAndy 7 ай бұрын
Спасибо за Вашу работу.
@rostikkigi4275
@rostikkigi4275 8 ай бұрын
доброго времени суток! Подписан и посмотрел почти все видео с канала!Очень информативно и доходчиво даже для нубов подобных мне) Спасибо за ваш труд!
@the_parse_hub
@the_parse_hub 8 ай бұрын
Спасибо!
@rostikkigi4275
@rostikkigi4275 8 ай бұрын
@@the_parse_hub с первого заказа задоначу))
@Embrace777
@Embrace777 8 ай бұрын
Подписался) Очень полезно) Спасибо!
@user-mf8wx6sv7o
@user-mf8wx6sv7o 8 ай бұрын
Спасибо за ваш труд!
@sergeyk39
@sergeyk39 7 ай бұрын
Большое спасибо, очень интересно!
@Vladimir_F609
@Vladimir_F609 9 ай бұрын
Спасибо большое за годный видос! С bs4 знаком, но всё равно что-то полезное находится 👍
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо!
@vrstatick7273
@vrstatick7273 9 ай бұрын
Очень интересно и информативно
@ON-ie1ib
@ON-ie1ib 7 ай бұрын
Супер информативное видео. Хорошая работа
@DayZDrag
@DayZDrag 7 ай бұрын
начал изучать парсинг, жёстко тупил и путался из-за не структуированного и как попало написанного кода, щас увидел твою структуру и всё резко стало понятно и просто, парсинг это работа с многочисленным количеством разных данных, чтобы не запутаться чуть ли не обязательно нужно писать структуированный код, в принпице во всём программировании структуированный код - понятный код
@BorisVP1967
@BorisVP1967 9 ай бұрын
Подписан. Прокомментирую для продвижения канала. В отличие от широкого ряда других авторов каналов на подобные темы, понятная подача материала. В принципе даже для меня, далеко не молодого человека, в том случае, если многократно повторю действие и буду одновременно его проговаривать, есть шанс понять происходящее, саму логику написания программ, которые способны последовательно осуществлять действия и даже вдумчиво и с толком запустить тот парсер, который нужен. Выбрать-бы ещё время для этого.
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо!
@alexanderkomanov4151
@alexanderkomanov4151 8 ай бұрын
Классно!
@kostyanmsk9493
@kostyanmsk9493 6 ай бұрын
Спасибо тебе огромное, очень понятно объясняешь, продолжай радовать контентом))) P. S: а можешь рассказать про динамический парсинг? (В экселе так можно) и про применение, например как создать файл, для обученмя бесплаиной модели? Как можно динамически парсить различные данные в этот файл что бы модель автоматически дообучалась? Возможно ли это? Было бы очень интерестно, так как тебя понятно воспринимать и слушать
@the_parse_hub
@the_parse_hub 6 ай бұрын
Спасибо! Насчет Excel и нейросетей, я в них далеко не специалист, поэтому пока этим порадовать не смогу
@cape4129
@cape4129 3 ай бұрын
ТОп вообще огонь канал
@the_parse_hub
@the_parse_hub 3 ай бұрын
Спасибо!
@biglakecom
@biglakecom 3 ай бұрын
блин чётко👍
@abc_chess
@abc_chess 9 ай бұрын
Полезное видео, странно что просмотров мало. Баловался с парсером полгода назад, основная проблема(я новичок) когда я циклом обходил каждую ссылку на товар и тянул данные, то не смог настроить скрипт так, чтобы эти данные последовательно записывались в эксель файл😢
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо. Насчет просмотров: канал относительно новый, всё впереди. Насчет последовательной записи: нужно использовать контекстный менеджер with, чтобы случайно не заблокировать файл, ну и стараться писать не по одной записи а блоками
@Chel1k7
@Chel1k7 7 ай бұрын
сайт очень добрый к парсингу, редкость такое
@the_parse_hub
@the_parse_hub 7 ай бұрын
Таких сайтов на самом деле много, не всегда есть смысл как-то защищать данные
@aisultanbaltabaev2053
@aisultanbaltabaev2053 9 ай бұрын
👍
@user-fv6wz9hd5l
@user-fv6wz9hd5l 6 ай бұрын
в целом соблюдая логику видео, и использую другой раздел сайта все получилось реализовать без не решаемых проблем. занимаюсь питоном по 4 каналам параллельно, за 1.5 месяца по выходным ( 40% месяца по 4-5 часов) свитчер 36 лет. дошел до ооп, решил сделать парсер как подведение итогов по функциональному. Спасибо автору. 1 замечание - перед началом подобного видео указывайте настройки исходной среды. на разных версиях продуктов или не скачанных надстройках, типа lxml, могут быть проблемы
@the_parse_hub
@the_parse_hub 6 ай бұрын
Ну насчет lxml и остальных зависимостей я это показывал в видео: kzbin.info/www/bejne/Z5Xdk3Zqrbd8jtk
@EarnDevison
@EarnDevison 8 ай бұрын
сделай пожалуйста видео на нажатие динамических кнопок playwright. которые меняются при наводке курсором
@the_parse_hub
@the_parse_hub 8 ай бұрын
Отдельное видео это будет наверное слишком, проще отвечу прямо здесь: Вот примерная логика: # находим элемент и забираем у него координаты box = page.get_by_role("button").bounding_box() # перемещаем курсор на середину этого элемента page.mouse.move(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2) # здесь нужно добавить ожидание, нового текста кнопки, класса или чего-то еще # клик page.mouse.click(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)
@EarnDevison
@EarnDevison 8 ай бұрын
@@the_parse_hub а если эта кнопка не элемент button а типа span или div? есть может Telegram чат? upd: ааа. кликом мышки отчаливая от ближайшего элемента..
@maxd.578
@maxd.578 9 ай бұрын
Крутой видос! А что если у нужного нам тега класс не с читаемым названием (div, class_='product-card'), а например такой какой-нибудь? 'col-lg-3 col-md-4 col-sm-6 col-xs-6 col-xxs-12 item item-parent catalog-block-view__item js-notice-block item_block'. Как быть?
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо. Насчет нужного селектора: бывают такие сложные моменты, особенно где названия классов генерируются (привет озону). Но почти всегда можно выйти на нужный элемент через его родителей\соседей или просто использовать какой-то один уникальный класс или атрибут, в твоём примере ".catalog-block-view__item" выглядит довольно нормальным
@rikenbaker1
@rikenbaker1 4 ай бұрын
Видео супер! Спасибо! Обратите внимание, что когда открывает получившийся файл на 16:35, внизу вкладка data и вот в ней всё в столбцах. У меня открылось в первой вкладке text, голову ломал что не так сделал.
@the_parse_hub
@the_parse_hub 4 ай бұрын
Ну это особенность формата csv. По сути, это обычный текст разделенный запятыми или другими символами
@user-ou1eb3cn9z
@user-ou1eb3cn9z 6 ай бұрын
price можно в try - exept обработать
@ru8954
@ru8954 8 ай бұрын
Добрый день! Не поможете советом? Мне нужно спарсить из интернет магазина все товары, которые там есть. Я так понимаю requests + bs4 в этом случае лучший вариант по скорости и удобству? И еще вопрос по поводу блокировки бота, она же возможна, ее как-то можно избежать? Может быть вы имели подобный опыт или есть совет, как это лучше реализовать?
@the_parse_hub
@the_parse_hub 8 ай бұрын
Эх, если бы всё было так просто, то этого канала не было бы) Всё зависит от сайта, поэтому какой-то внятный совет не могу дать
@ru8954
@ru8954 8 ай бұрын
@@the_parse_hub Мне это нужно в рамках учебного проекта, поэтому не особо важно какой это будет магазин. Например dns
@the_parse_hub
@the_parse_hub 8 ай бұрын
@@ru8954 Возьмите тогда rdstroy.ru/. Там точно можно парсить через requests и bs4,защиты нет, недавно проверял
@BorisVP1967
@BorisVP1967 9 ай бұрын
16:40 Судя по информации из "Инспектора" браузера, лучшим решением для проверки , наверное всё-же явилось-бы, считывать информацию о количестве товаров из атрибутов, которые доступны: Раковины 581 Так на сегодня "раковин" 581, в то время, как на момент съёмки видео их было 587. При этом возможно считать заведомо ложным утверждение о том, что когда-то товаров под каталожным названием "Раковины", не станет больше 587 (пятисот восьмидесяти семи). То есть проверка количества по атрибутам, наверное всё-же более правильное решение для автоматизации задачи, в том случае, если сама задача не разовая.
@the_parse_hub
@the_parse_hub 9 ай бұрын
Согласен. Но вариант с учётом дублей мне больше по душе
@Tribunall
@Tribunall 7 ай бұрын
Паршу 2 сайта для сравнение цен, где лучше сохранять данние для сравнения (json, sqlite) или в чем?
@the_parse_hub
@the_parse_hub 7 ай бұрын
Sqlite вполне нормальная бд для таких целей
@Tribunall
@Tribunall 7 ай бұрын
@@the_parse_hub спасибо за подказку
@IamZAS
@IamZAS 7 ай бұрын
Привет! Спасибо за объяснение, супер! НО у меня небольшая ошибка, на текущий момент раковин = 832, показывать элементов на сайте стоит по 100. Парсит нормально, но показывает в выводе консоли всего 9 страниц, хотя на сайте 11 страниц. Можешь подсказать где моя ошибка?
@the_parse_hub
@the_parse_hub 7 ай бұрын
Нужно выводить отладочную информацию и смотреть, так сказать не могу
@IamZAS
@IamZAS 7 ай бұрын
@@the_parse_hub Я вроде разобрался, там сайт кривой. (на мой взгляд)
@the_parse_hub
@the_parse_hub 7 ай бұрын
@@IamZAS такое тоже бывает)
@user-fv6wz9hd5l
@user-fv6wz9hd5l 6 ай бұрын
При открытии полученного файла кодировки пайчарма спрашивают что выбрать, при открытии файла в текст выдаются ошибки, какую кодировку стоит использовать? пишет что .csv только на проф версии пайчарма, есть вариация чем корректно его открыть в среде пайчарм без проф версии?
@the_parse_hub
@the_parse_hub 6 ай бұрын
Насчёт кодировки, многое зависит от операционной системы. Как нормально (в табличном виде) открыть csv в бесплатной версии - наверное никак. В крайнем случае, можете найти где скачать "бесплатную" про версию и использовать полный функционал или переписать немного кода и сохранять результат в формате xlsx например
@Andriyklm9
@Andriyklm9 8 ай бұрын
сделай пж видео о том как пройти recaptcha v2 callback на selenium
@the_parse_hub
@the_parse_hub 8 ай бұрын
В планах есть такое
@AnimationLook
@AnimationLook 6 ай бұрын
Привет, можешь сделать инструкцию, как получать har файлы со траниц с помощью playwright? Еще можно browsermob + selenium разобрать, но мне кажется это уже устаревающая связка
@the_parse_hub
@the_parse_hub 6 ай бұрын
Вот официальная инструкция, по-моему нормально расписано: playwright.dev/python/docs/mock#mocking-with-har-files
@AnimationLook
@AnimationLook 6 ай бұрын
@@the_parse_hub Да, это я уже все читал, но все равно не получается. Поэтому я подумал, что инструкция по этой штуке будет неплохим контентом
@the_parse_hub
@the_parse_hub 6 ай бұрын
@@AnimationLook Это будет в курсе по Playwright, но когда он будет готов для меня большой вопрос
@user-gq5pm4wu4v
@user-gq5pm4wu4v 8 ай бұрын
Здравствуйте! А вы не сталкивались с блокировкой на wildberries? После нескольких часов парсинга выдает код 429, значит заблокировали. И приватные прокси не помогают. И не могу дальше парсить.
@the_parse_hub
@the_parse_hub 8 ай бұрын
Добрый день. 429 это значит слишком частые запросы, это не блокировка. В ВБ возникает обычно когда идет парсинг страницы примерно > 30. Видимо считается, что настоящий пользователь до этого не дойдет никогда. Попробуйте делать повторный запрос, до 50-60-й страницы это обычно помогает
@user-gq5pm4wu4v
@user-gq5pm4wu4v 8 ай бұрын
@@the_parse_hub попробовал. Действительно, если снова начать с первой страницы, то идёт. Спасибо вам большое!
@millera6656
@millera6656 8 ай бұрын
Добрый день! при наборе: sku = product.find("span", class_="product-card_key").text print(sku), и после запуска программы выдает ошибку : sku = product.find("span", class_="product-card_key").text AttributeError: 'NoneType' object has no attribute 'text' скажите пожайлуста что не так?
@the_parse_hub
@the_parse_hub 8 ай бұрын
sku = product.find("span", class_="product-card_key") Здесь идет поиск какого-то элемента, если элемент не найден, то функция вернет None, далее идет попытка у этого элемента взять значение атрибута text и конечно у None не может быть такого атрибута. Скорее всего неправильно записан селектор: class_="product-card_key", проверяем на сайте - точно там class_ = "product-card__key" (Двойное нижнее подчеркивание)
@anus8346
@anus8346 9 ай бұрын
не по теме ролика конечно хочется увидеть видео о решении callback капчи с помощью rucaptcha в интернете нет объяснений как это сделать
@the_parse_hub
@the_parse_hub 9 ай бұрын
Да, в планах есть
@alexandrchur5665
@alexandrchur5665 6 ай бұрын
Здравствуйте! Подскажите, как написать такого бота, который бы "слушал" несколько чатов в Телеграм и пересылал сообщения в личку по каким-то ключевым словам? К примеру, я занимаюсь строительством и ремонтом, и надо первым получать предложения в чатах своего города, если кто-то ищет строителя.
@the_parse_hub
@the_parse_hub 6 ай бұрын
Добрый день! Начните с этого: skillbox.ru/media/code/parsim-dannye-v-telegram-na-python-chast-1/
@alexandrchur5665
@alexandrchur5665 6 ай бұрын
@@the_parse_hub Это уже посмотрел, спасибо! Но там парсинг используется, чтобы просматривать сообщения в чате, а как сделать, чтобы бот "слушал" сообщение в текущем времени, чтобы успеть первым ответить потенциальному клиенту?
@the_parse_hub
@the_parse_hub 6 ай бұрын
@@alexandrchur5665 к примеру так: habr.com/ru/articles/425151/
@alexandrchur5665
@alexandrchur5665 6 ай бұрын
@@the_parse_hub Большое спасибо! )
@alexandrchur5665
@alexandrchur5665 6 ай бұрын
@@the_parse_hub У меня ещё вопрос. В статье описывается сохранение новых сообщений в файл на ПК, но не всегда есть возможность иметь ПК под рукой на котором запущен бот. Подскажите, как настроить перенаправление сообщений в телеграм-клиент на телефон?
@polskapospolity1834
@polskapospolity1834 7 ай бұрын
Можно, пожалуйста разъясните: у меня в VScode кариллица отображается знаками вопроса. Как мне настроить кодировку?
@the_parse_hub
@the_parse_hub 7 ай бұрын
пропишите кодировку, к примеру: open(f"glavsnab.csv", mode="w", newline="", encoding="utf-8")
@polskapospolity1834
@polskapospolity1834 7 ай бұрын
@@the_parse_hub теперь в csv файле вообще нет данных. Вообще это не очень большая проблема, тк эксель прекрасно читает эти файлы. Просто ради интереса узнаю
@Enthe0genic
@Enthe0genic 8 ай бұрын
Почему может выводить None при первой (8:12-8:26) проверке?
@the_parse_hub
@the_parse_hub 8 ай бұрын
Значит такой элемент не найден. Возможно неправильно записан селектор
@Enthe0genic
@Enthe0genic 8 ай бұрын
@@the_parse_hub спасибо, нашла ошибку)
@MUSRB
@MUSRB 9 ай бұрын
почему не сохраняет в отдельный столбпец?
@the_parse_hub
@the_parse_hub 9 ай бұрын
Не знаю про что вопрос, но наверное пропущена запятая где-то в функции записи
@MUSRB
@MUSRB 9 ай бұрын
@@the_parse_hub with open(f'eprr.csv', mode='w', newline='', encoding='utf-8') as fie: writer = csv.writer(fie) writer.writerow(['name', 'price'])
@vrstatick7273
@vrstatick7273 9 ай бұрын
Интересна тема обход различных блокировок при отправке post запросов
@the_parse_hub
@the_parse_hub 9 ай бұрын
Согласен. Но с post запросами многое зависит от сайта, так что универсального решения быть не может. На каком-нибудь сайте обязательно покажу
@mhalev
@mhalev 8 ай бұрын
А в ссылке ?limit=600 нельзя было указать? :)
@the_parse_hub
@the_parse_hub 8 ай бұрын
Указать можно, только работать не будет) На лимиты тоже есть лимиты
@gosros662
@gosros662 7 ай бұрын
Почему я не понял? Чувствую себя тупым
@the_parse_hub
@the_parse_hub 7 ай бұрын
Если какой-то момент непонятен - могу прояснить
@user-ld3yu9uy7v
@user-ld3yu9uy7v 9 ай бұрын
Спасибо за полезный контент, учусь по твоим видео, про датаклассы очень информация помогла!)
@the_parse_hub
@the_parse_hub 9 ай бұрын
Спасибо! наверное про датаклассы нужно отдельное видео, там возможностей гораздо больше, чем я использую в видео
@user-pk7le8he2r
@user-pk7le8he2r 9 ай бұрын
Видео отличное! Узнал ряд новых вещей про bs4. а в чем здесь преимущество использования датаклассов, перед, например, банальным списком словарей?@@the_parse_hub
Скрейпинг сайтов с помощью библиотек Beautifulsoup и Requests на Python
23:05
Мастерская Важных историй
Рет қаралды 75 М.
Используем ChatGPT API бесплатно с Python
13:51
The ParseHub
Рет қаралды 163 М.
Is it Cake or Fake ? 🍰
00:53
A4
Рет қаралды 18 МЛН
UFC Vegas 93 : Алмабаев VS Джонсон
02:01
Setanta Sports UFC
Рет қаралды 184 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 71 МЛН
Парсинг недвижимости Авито, Циан, Яндекс. Часть I
1:02:28
Простой парсинг сайтов на Python | requests, BeautifulSoup, csv
1:11:50
Андрей Андриевский
Рет қаралды 133 М.
Парсинг динамических сайтов | selenium python
43:00
Алексей Куличевский
Рет қаралды 2,4 М.
Безлимитный парсинг на python | Бесплатная альтернатива прокси [Upper Junior]
11:38
Павлин Шарит - ИТ вместе с Николаем Павлиным
Рет қаралды 8 М.
Как парсить данные с сайта на Python
1:59:04
Hillel IT School
Рет қаралды 15 М.
Is it Cake or Fake ? 🍰
00:53
A4
Рет қаралды 18 МЛН