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

preview_player
Показать описание
Обучение (Web-Scraping) веб парсингу на Python. В данном видео выполним заказ на фрилансе и разберем на практике работу с библиотеками requests и Beautifulsoup4. Научимся делать запросы к динамическому веб сайту, сохранять страницы, парсить из них нужную нам информацию и рассмотрим сохранение данных в json файл.

🔥 Доступ в приват | Поддержать проект:

🔥 Стать спонсором канала:

Таймкоды:
00:00 - Интро
00:15 - Описание проекта
01:00 - Изучаем структуру страницы
01:47 - Установка нужных для работы библиотек
02:05 - Создаём функцию, и получаем главную страницу
03:40 - Получаем ссылки на стартапы с первой страницы
05:21 - Получаем страницу стартапа
08:16 - Собираем данные стартапа
13:15 - Сохраняем данные в JSON файл
13:54 - Собираем данные всех стартапов с первой страницы
14:40 - Сбор динамических данных
19:16 - Запуск парсера

*****Ссылки*****
Обучение парсингу на Python #1 | Парсинг сайтов | Разбираем методы библиотеки Beautifulsoup

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

Документация Beautifulsoup:

Код проекта на github:
И в telegram канале:

*****Соц.сети*****
Рекомендации по теме
Комментарии
Автор

Таймкоды для вас:
00:00 - Интро
00:15 - Описание проекта
01:00 - Изучаем структуру страницы
01:47 - Установка нужных для работы библиотек
02:05 - Создаём функцию, и получаем главную страницу
03:40 - Получаем ссылки на стартапы с первой страницы
05:21 - Получаем страницу стартапа
08:16 - Собираем данные стартапа
13:15 - Сохраняем данные в JSON файл
13:54 - Собираем данные всех стартапов с первой страницы
14:40 - Сбор динамических данных
19:16 - Запуск парсера

PythonToday
Автор

Я понимаю что код написан быстро, но для новичков нужно будет учесть несколько не критичных, но ошибок в коде:
1. Довольно странно постоянно сохранять html файл, потом открывать его и парсить данные из него (по сути просто лишние движения). Правильно будет просто использовать responce.text и доставать информацию оттуда (но возможно у заказчика было требования сохранить html файлы)
2. Хардкод пагинации может привести к тому что в будущем не все стартапы будут пасриться (на сайт банально добавят новые стартапы и пагинаций станет больше). Правильно будет проверять ответ на каждой итерации цикла, и если responce.status_code == 404 то выходим из цикла
3. Это уже ошибка в стиле написания кода. Абсолютно весь код находится в одной функции. Получения запроса с основного сайта и распарсивание карточек стартапов должно быть отдельно (для сумасшедших можно даже на 2 функции разбить). Парсинг данных со страницы стартапа так же должно производится отдельной функцией. Сохранения json, так же должно быть отдельной функцией.
4. Это скорее совет чем ошибка. На сайте не так много карточек, но если учесть что в будующем их вероятно станет больше (запросов станет больше), то код может выполняться несколько десятков минут. Если вы пишите парсер и либо он уже делает много запросов, либо есть вероятность что в будующем он будет делать много запросов, то просто необходимо использовать aiohttp (или любую другую асинхронную библиотеку). Если парсер одноразовый, это можно упустить.
5.Было бы правильно вывести базовый URL в отдельную переменную, а не копировать его к каждой относительной ссылке.
6. Считается неправильным отлавливать все исключения в блоке try except, так как если пользователь нажмёт CTRL+C, то это не прекратит работу программы, а выкинет исключение. Если вам нужно поймать конкретное исключение, укажите его в блоке except, если нужно отловить все (за исключением нажатия CTRL+C), то просто внутри блока except выполняйте проверку.
7. Заголовки лучше прописывать вне функции как константу (в ином случаи вы либо используете одну функцию на всю программу (что неправильно) либо копипастите headers в тело каждой функции)
8. Что бы не заниматься лишними телодвижениями, можно использовать XPATH для указания необходимого блока.

Думаю это всё к чему смог придраться. Отличный урок особенно для новичков. На парсерах можно заработать первый деньги питон разработчику, так как офферов достаточно много. Дам совет для тех кто парсит какой то сложный сайт. Изучите траффик, который идёт от сайта. Иногда можно найти запрос в котором все данные поступают в одном json ответе и вам не нужно долбить сайт сотнями запросов. Если вам удалось найти такой запрос, считайте что вы выполнили заказ на фрилансе за 5 минут, так как вам остаётся лишь достать данные из json и сохранить туда, куда укажет заказчик.

chpiced
Автор

Уроки очень классные, только одна просьба можете ТЗ показывать, было бы очень интересно

pythonx
Автор

09:40 - Try except: отдельное спасибо за огромную подсказку

Jon_Britva
Автор

Это было круто! Сначала - все казалось огромным драконищем, а оказалось - дело разбора на 2-3 дня. Пасяб - теперь можно топать выполнять заказы👍)

takiekakmi
Автор

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

begula_chan
Автор

Ты чёртов гений, я с этой пагинацией мучаюсь 2-ой день, всякие видео смотрю, stackoverflow чекаю, нихрена не помогало, ну не работало и всё, зашёл к тебе, а тут, просто тупо через request запрос делаешь и всё, никакие параметры не нужны, отличные гайды, просто идеальные.

ifqeojn
Автор

Без слов, это было четко, ясно, понятно, КРАСИВО!

aeca
Автор

шикарные видосы продолжай пожалуйста)))

tenebris
Автор

Для домашнего задания кто занимается доработайте код так что бы он обрабатывал не 23 страницы а все с учётом того что могут быть добавлены страницы. Очень интересное видео. Автору спасибо.

NickKirieiev
Автор

Все по классике: сначала написал код, потом решил посмотреть гайд. Хорошо, что мой код пока что никто не видел))

crussaider
Автор

Супер!!! Смотреть одно наслождение. Видна рука проффесионала. Спасибо за видео!

ruservices
Автор

Вы молодец. Не надо бояться делиться знаниями. Правда молодец. 😊

DenisE
Автор

Отличные уроки !!!! Если будете работаете на фрилансе не могли бы сделать новые
уроки, на новых сайтах будет понятнее.

cxizpwc
Автор

Нормальный, детальный обзор, с боевым проектом, где есть сложности и нюансы, такие как несколько страниц, запросы вложенные. Кстати хорошая тема просто сохранять как HTML страницы, тогда будут обычные HTML без json запросов и грязи) отличные урок продолжай, надо денежкой тебя отблагодарить !

qepdykk
Автор

Очень круто и понятно объясняешь
Я давно такой канал искал
Желаю успехов

onwnpqd
Автор

с помощью вашего канала зашел в программирование, большое спасибо

makedatauseful
Автор

Как же ты меня мотивируешь ) я кажется знаю чем буду заниматься) именно парить, очень красиво получается!

setqs
Автор

То чувство, когда видео длится 20 минут, а на его понимание, повторение о осознание всех процессов в коде тратишь часа по 3 ) Не так давно начал заниматься Python, освоил базу на каком-то бесплатном курсе, решил что будет интересно попробовать себя именно в этой сфере. Как практика Ваши уроки крайне полезны, хоть и не просты, этого не отнять 😅

bigmek
Автор

Как всегда, только самое нужное и интересное, без воды!!!

HeyArtem