Братан, дай Бог тебе здоровья. Кот вообще решает. Твоя манера подачи, форматирования видосов, да вообще вся подготовка и поставленная речь делает тебя лучшим на ютубе. Круто!
@PythonToday2 жыл бұрын
Большое спасибо за поддержку!
@АлександрИтяксов-л2р2 жыл бұрын
дружище, ты настоящий герой!!! хочу стать твоим падаваном, готов каждый день стирать твои носки вручную
@aleksejborovinskij11553 жыл бұрын
О благодарю Вас добрый человек! Желаю Вам улучшения кармы! Очень помогают Ваши труды.
@PythonToday3 жыл бұрын
Спасибо за фидбэк! Рад что полезно.
@БогданОнофрий3 жыл бұрын
Спасибо за такой контент! Очень помогает в развитии меня как программиста!!!
@PythonToday3 жыл бұрын
Спасибо за поддержку! Рад что полезно
@Openopenkam2 жыл бұрын
Предлагаю записывать url с ошибкой в отдельный файл чтобы в последующем обрабатывать отдельно список из этого файла, либо использовать в дальнейшем как исключение.
@orthodox-chanel2 жыл бұрын
О, вот и практика по страшным рекурсивным функциям)))
@zakirovio2 жыл бұрын
крутая функция. недавно как раз думал, как продолжить с того же места в случае возникновения ошибки и тут этот урок прям в тему
@zakirovio2 жыл бұрын
может в будущих уроках вы это уже применили, но у меня возникла мысль дополнить ветку if путем добавления прокси. например 3 повторных запроса отправляются с задержкой, если это не помогло, значит возможна блокировка хоста, в следствии чего последние две попытки меняют прокси браузера и работают с ним
@user-romchik7773 жыл бұрын
Дружище, огромное тебе человеческое спасибо!
@PythonToday3 жыл бұрын
Благодарю!
@jennysavvage90943 жыл бұрын
Молодец, парень! Удачи тебе!
@PythonToday3 жыл бұрын
Благодарю! Взаимно 💪
@alanominatorkiborg58607 ай бұрын
И удобнее будет в отдельный декоратор вынести, а в случае возникновения ошибки до добавлять в отдельный список, а в конце скрипта в файл записать их.
@rand_name67343 жыл бұрын
отличный урок, и анимация к месту 👍
@PythonToday3 жыл бұрын
Спасибо!
@АлексейДроздов-л8р2 жыл бұрын
Ооо, это полезная тема, спасибо!
@vigauss18893 жыл бұрын
Спасибо👍
@PythonToday3 жыл бұрын
Благодарю за фидбэк!
@dryuni3 жыл бұрын
Круть! Как обычно (для меня): пока слушаешь/смотришь, как делает знающий человек - всё понятно. Как самому делать? Да хрен его знает...
@FGFDST3 жыл бұрын
Ну я когда спорт начал парсить, в частности флешскор и получил облом. Я начал парсить контору с еденичкой в названии тамприходят json ответы. И получилось написать уведомлятор о матчах и событиях в играх. Так и получается пока решаешь задачу, ищешь ответ и учишься по ходу развития своего проекта.
@Alex.T.H.3 жыл бұрын
Садиться и писать. Без постоянной практики ничего не получится
@PythonToday3 жыл бұрын
Благодарю! Да брать и делать. Это в видео 10 минут. На деле бывает 3-5 часов только библиотеку ставишь, ибо нихрена не работает.
@blackjack25583 жыл бұрын
@@PythonToday соглашусь с тобой, лайк однозначно !
@IvanTarazevich3 жыл бұрын
Актуально, спасибо!
@PythonToday3 жыл бұрын
Благодарою за фидбэк!
@birdwatcher_channel2 жыл бұрын
Благодарю. Очень полезная штука
@Bazilit2 жыл бұрын
Интересная задумка. Насколько она применима на постоянной основе, это вопрос. Скорее для нагруженных запросов. Для себя дополнил код записью url с ошибками в отдельный файл. Т.к. по логике, без них данные будут не полные, а их можно будет попытаться повторно проверить по сохраненному файлу.
@Тимофей-в4х8н3 жыл бұрын
Как всегда очень интересно и познавательно, можно следующий урок про работу с PDF(то есть залив ответов в PDF, как залив данные в json)?
@PythonToday3 жыл бұрын
Благодарю за фидбэк. Пока не сталкивался с такой задачей. На канале есть видео по сохранению данных в PDF, посмотри.
@blackcatdevel0per Жыл бұрын
5:57 🤔 Делал что-то похожее но вариант здесь кажется лучше)
@Саня-х2м5в3 жыл бұрын
Очень крутая и качественная подача! Будут ли уроки по Scrapy в будущем?
@PythonToday3 жыл бұрын
Спасибо за фидбэк. Возможно когда нормально изучу
@IgorYakimov-x9p Жыл бұрын
Ребят, всем привет! Смотрю этот курс по парсингу с огромным удовольствием и параллельно практикуюсь. Только вот есть вопрос, наверное, его можно отнести к фундаментальному. Подскажите, пожалуйста, почему иногда используются такие вещи, как headers, user-agent, а иногда - нет. Буду рад ответу с коротким пояснением. Спасибо!
@Видон-л4в10 ай бұрын
http заголовки в первых видео упоминалось, что они нужны для идентификации пользователя сервера при запросах (если я ниче не перепутал)
@ИгорьЛатуха3 жыл бұрын
Пайтон и котики! Невозможно не лайкнуть )))
@PythonToday3 жыл бұрын
💪
@silvertruenoobs3402 жыл бұрын
буквально на днях наткнулся на библиотеку grequests, которая в целом как requests (ибо с нее сделана), но работает намного шустрее, прям в разы, ну и попробовал переписать этот обработчик под нее, в итоге получилось прям намного быстрее и если не трогать попытки, а просто обрабатывать ошибки и продолжать работу то прям огонь (список из почти 900 ссылок, обработался за 4 минуты), а вот если трогать исключения, то там я уже прям запутался, так как изначально библиотека grequests пробегается по ссылкам в нашем списке и формирует свой список ответов, а на обработку улетает конкретно один запрос из этого списка, и как его обработать и вернуть обратно, пока загадака... пока что засунул его в обработку через простой реквест и вроде обработка проходит, только вот как полученный ответ вернуть обратно, что бы записать его в список пока не совсем понятно (если кто вкурсе подскажите пожалуйста буду благодарен) пока получается так: - если не обрабатывать попытки код будет: from datetime import datetime import grequests import requests from bs4 import BeautifulSoup import lxml start_time = datetime.now() # функция обработки ошибок def exception_handler(request, exception): print(f'страница {request.url} не отвечает {"-" * 50}') def main(): with open('lesson10/list_url.txt') as file: books_urls = file.read().splitlines() # пробегаемся по ссылкам в списке response = (grequests.get(url) for url in books_urls) # собираем в список полученные ответы, для ошибок вызываем функцию обработки response = grequests.map(response, exception_handler=exception_handler) for book in response: try: soup = BeautifulSoup(book.text, 'lxml') print(f'{soup.title.text} {"-" * 20}') except Exception as ex: print(f'некорректый адрес или страница не отвечает {"-" * 20}') continue finish_time = datetime.now() - start_time print(finish_time) if __name__ == '__main__': main() - если обрабатывать то функция обработки, будет выглядеть приблизительно, так (но по факту хз, так как не совсем понятно отрабатывает ли вообще блок трай - опять же если кто знает как надо расскажите буду очень рад def exception_handler(request, exception, retry=5): try: response = requests.get(url=request.url) except Exception as ex: time.sleep(1) # импортируем библиотеку тайм if retry: print(f'[Info] retry={retry} => {request.url}') return exception_handler(request, exception, retry=(retry - 1)) else: print(f'страница {request.url} не отвечает {"-" * 50}') # вот тут хз нужен ли этот блок для возврата ответа или он пройдет автоматом или вообще все по другому должно быть и сам ретерн например нужно было возвращать в блоке трай else: return response
@Daniil2010_init_6 ай бұрын
Ошибки при парсинге как blood in the bath
@Andriyklm93 жыл бұрын
Полезная инфа
@PythonToday3 жыл бұрын
Благодарю, рад что полезно
@jeyhunzeynalov77710 ай бұрын
✌
@vovast82113 жыл бұрын
Какими дополнениями в vscode пользуешся? *Типо для терминала*
@shpex.20773 жыл бұрын
Зачем изобретать колесо когда оно уже существует? Для работы вряд ли будут использоваться отдельные запросы, скорее всего сессия, там же можно будет использовать HTTPAdapter с кол-во попыток и таймером их срабатывания, и не важно какая будет сетевая ошибка, она сразу обработается и будет повторно пробовать повторить действие.
@PythonToday3 жыл бұрын
Не знал об этой библиотеке, есть пример кода? Если да, то кинь ссылку на github пожалуйста
@vasbkamarxil1260 Жыл бұрын
функция Exception поменялась? что т не так у меня не попадаю в счетчик . . . .
@FGFDST3 жыл бұрын
except KeyErrore, except IntegerErrore, и т д. можно было добавить в данный урок
@PythonToday3 жыл бұрын
Для чего? Идет обработка всех ошибок ведь
@FGFDST3 жыл бұрын
@@PythonToday допустим ловим json ответ а там ключ без значения, а на рендере это отображается как ноль. А ошибка при парсинге integererror.
@Naberegn Жыл бұрын
Где брать accept?
@АлександрВыскребцев3 жыл бұрын
Погнал парсить 18 лямов компаний! вот только долго( а можно разделить свою задачу например на несколько ВиртуальныхМ?, пакеты та будут приходить с моего основного роутера, получается сайт будет в любом случае видеть все мои ВМ как одно IP ? и будет ошибку кидать?
@МаксимМаксимов-ч9т3 жыл бұрын
А зачем были куплены пару впс?
@oleksandr67503 жыл бұрын
полезное видео, но когда хотел применить к своему коду, оказалось, что с прокси не работает. Возвращает код ошибки , но не срабатывает except, цикл с запросами идет дальше. Есть предположения почему?
@ПищащийГолландец3 жыл бұрын
3:02 😄👍
@PythonToday3 жыл бұрын
😀
@НейтральныйМаппер-з2м3 жыл бұрын
Я бы вместо создания списка через splitLines проходился бы по каждой строке отдельно. Т.е. for link in file: ... Потому что тогда код будет быстрее работать, т.к. создание списка и его итерирование дольше, чем просто итерирование.
@toxic_not94473 жыл бұрын
Добрый день ! пытаюсь сделать парсер, для данного сайта , и возникает провал , в моменте запроса изза первоначальной капчи , как обойти? примерно такой же момент видел у вас в видео, но все таки другое , или нужно перекапашить все запросы , которые делает сайт ? p.s. сайт вот : www.postavshhiki.ru/katalog-postavshchikov/75-oborudovanie
@scromniy_winner3 жыл бұрын
Сделай через selenium
@АлександрРоманов-х4ц9ф Жыл бұрын
зачем писать if __name__ == "__main__": main()?
@PythonToday Жыл бұрын
На канале есть подробное видео об этой инструкции kzbin.info/www/bejne/nqDYnamtbphqnMk
@sonicpark80992 жыл бұрын
Я ни как понять не могу почему все юзают bs4 а не scrapy ...