Python requirements.txt. Создание и применение
Итак requirements.txt! Это питоновский аналог package.json. если кто знаком с node js.
Эта штука нужна при деплое (заливании проекта на сервер), а также при командной разработке, чтобы одной командой установить все используемые в проекте библиотеки правильных версий.
Принцип такой:
1) создание виртуального окружения: virtualenv venv
2) активация виртуального окружения:
windows $venv/Scripts/activate
linux $source venv/bin/activate
3) эти команды нужно выполнить, если не работает pip freeze в пункте 4.
linux: sudo apt-get install python-matplotlib
windows: python -m pip install -U pip setuptools
python -m pip install matplotlib
4) Чтобы сформировать вышеоговренный файл вводим
pip freeze > requirements.txt
5) чтобы установить библиотеки из сформированного файла в пункте 4:
pip install -r requirements.txt для python 2.x
pip3 install -r requirements.txt для python 3.x
Ничего сложного, но надо знать.
Кстати в течение недели, как выложил видео в youtube, был на собеседовании, в котором один из вопросов был, "Что такое виртуальное окружение", а об этом я рассказывал в предыдущем видео и сразу представил это:
Следущий вопрос был как раз про requirements.txt. И тут мне было еще тяжелее сдержать улыбку =) Так что будет полезно.
Видео само собой прикладываю.
Учу питон, пишу парсеры. Часть 3
И вот я пишу парсеры. На php. Есть функционал в стандартной установке, есть библиотеки для парсинга, есть примеры. Да вот неприятность – владельцам сайтов и хостингов сильно не по душе, когда их парсят и борются с этим всеми средствами. И почти сразу же меня начали блокировать. Я перебрал несколько вариантов, добавлял куки, агентов, настройки, разные варианты и подходы – не получается. Вернее, не получается стабильно.
От парсера требуется совсем немного – нужно получить страницу, построить DOM дерево, получить элемент и его вывести, иногда обработать и записать куда ни будь, обычно в текстовый файл в разных кодировках. Есть неприятные моменты, это то, что в учебниках даются самые простейшие примеры и есть всего два русскоязычных автора по видео, где парсеры именно объясняются как их писать и ещё одно видео школьника, этот школьник умеет писать парсеры, а вот объяснить не может – он ещё не знает терминологии.
Стал искать другие варианты – одни для меня тогда были сложные, другие непонятно как сделать, остановился на питоне (так посоветовали). Попробовал учебные примеры – получилось. Стал писать парсер для моего случая и ничего не получается. Отложил в сторону парсеры, взял учебник питона и стал его листать. Я уже учил этот язык лет десять назад, половину прошёл и забросил, тогда у меня не было для него практического применения. Стал учить заново.
Учебные примеры довольно простые, только какие-то пустые – ну зачем мне срезы, стринговые операции, операции с кортежами? Стал мучать именно парсеры; библиотека BS4 для парсинга рекомендуется во всех статьях и есть несколько видео её применения. Через пару недель по вечерам первый успех – стало собираться со страниц учебных примеров именно то, что мне нужно. И приступил к нужным мне сайтам – тут опять неприятность – на каких-то сайтах получается, на некоторых вообще ничего не получается. То дизайн на сайтах такой, что никак за элемент не зацепится, то пагинация настолько оригинальная, что работает только через стрелки пагинации, разные проблемы.
Мне опять подсказали - нужно использовать Selenium. А это много сложнее, с моими скудными знаниями это было сложно. Только это хоть и медленный и очень непростой вариант, но именно он помог мне получать данные почти с любой страницы. Язык пришлось очень сильно доучить, ушло больше полугода и это на базис. Сейчас нормальные курсы предлагают обучить базе языка за 2,5 года, думаю это реальный срок. Я учил быстрее, под практическую задачу, только у меня от этой учёбы были постоянные головные боли и полное непонимание как что работает.
С тех пор я написал почти сотню парсеров на BS4, и больше 400 парсеров на selenium и до сих пор не всё получается. То с кодировкой проблемы, то с очисткой данных проблемы (так вот зачем в книгах по питону столько места на первый взгляд бесполезного материала ), то не пишется в базу или не могу получить элемент. Вот сейчас опыт больше 500 парсеров, постоянно учу и практикуюсь и не всегда получается написать простой парсер.
И питон на первый взгляд простой язык, на деле оказался настолько же простой, как и php. Во многом они пересекаются, по другому и быть не могло, и всё таки они для разных целей.
И немного попробовал python для модных ныне вещей – распознавание текста, фото, нейронные сети, обработка текста и многое другое. Делал это на основе того, что я неплохо знаю математику и много прикладных вещей, включая статистику. Даже сделал пару небольших сервисов, массово они не взлетели. Тут не всё однозначно, с учётом моего опыта судить сложно, но есть что показать и рассказать. Не пробовал только веб разработку на питоне, на мой взгляд на пыхе это делать проще и выгоднее. И ещё удобно делать математику на python, я напишу что думаю о тех, кто говорит – «программисту математика не нужна». И последнее нужно довольно долго объяснять, продолжу на следующей неделе.
Как спарсить динамические данные (ajax) на python3
Чтобы спарсить ajax на python необходима страница с ajax и сам python.
Для примера используется mail.ru только не стоит вчитываться в заголовки, и искать в них смысл, иначе можно деградировать.
Задача ясна, решение простое:
1)нужно найти адрес на который посылается запрос на получение динамических данных.
Для этого необходимо перейти на необходимый сайт и
1.открыть вкладку нетворк (через просмотреть код в хроме).
2.Затем нажать на кнопку/ссылку, после которой появляются новые данные.
3.обнаружить в этой вкладке появившийся запрос.
4. Взять из него request URL, headers, и в самом низу параметры (query string parameters).
Далее передаём вышеописанное в сам код (HEADERS = request headers, data = query string parameters)
Куда пихать ссылку или нужно подробнее о парсинге, посмотрите мой пост про парсинг, там всё расписано.
Запустив скрипт, если все параметры и прочее верны, в ответ будут получены те самые данные, которых нет в изначальной верстке, и которые не парсятся по прямой ссылке на страницу.
Кому проще по видео:
Как стать программистом! Информация, размышления, рекомендации
Привет.
Я нередко встречаю публичные вопросы, обращения, сообщения и даже мольбы от разного рода граждан этой вселенной на такую, казалось бы, довольно легко раскрываемую тему "Как стать программистом/разработчиком/IT-шником?". И последнее время почему-то всё чаще моё внимание цепляется за такие сообщения и вопросы. Сначала казалось, что это я стал больше читать всякие ленты/публикации/комментарии. Но это не так. Я ровно так же, как и раньше, уделяю своей работе по 12-15 часов в сутки. Потом я подумал, что с повышенной динамикой начало прогрессировать отупение интернет-аудитории. Но это тоже не совсем так. Прогресс дебилизации лишь кажется ускоряющимся, потому как люди умные, увлеченные и занятые делом не выделяют сколь-либо существенное время из своих резервов для ведения бессмысленных срачей и публикации бессмысленных вопросов. А те, кто занимается этим - просто не получают корректного и полного ответа, поэтому со временем задают либо те же самые вопросы снова, либо уточняющие/дополнительные вопросы, без ответов на которые не могут понять сути ответов на предыдущие их вопросы. Так это всё и крутится в бесконечной карусели, откуда людей меньше выходит, чем входит. А новые входящие снова задают те же самые вопросы, на которые другим вопрошающим не ответили достаточно точно и подробно, чтобы это было исчерпывающим.
К чему это я?
Хороший предприниматель - это человек, который много предпринимает: совершает действий, принимает решений, рискует. Тут лично я ничем не рискую, но хочу кое-что попробовать.
Хочу попробовать объяснить максимальному большинству НЕтупых людей, кто действительно хочет войти в сферу IT головой и руками для того, чтобы что-то делать и создавать новое, а не просто попытаться чо-то понять, быстренько изучить и найти по щелчку пальцев охренительную работу с огромным заработком. Если ни до кого не получится ничего донести - ничего страшного. Я хотя бы попытался...
Итак, для начала, я отсею всех, кто хочет войти в IT (войти в ойти, кек) и стать программистом/разработчиком/другим специалистом отрасли из-за "больших зарплат" или "высоких прибылей".
Большие деньги зарабатывает тот, чьи знания и опыт уникальнее, совершеннее и востребованы на рынке. Уникальные знания и опыт не вычитать ни в каких книгах/статьях, не высмотреть в туториалах и не получить на вебинарах всяких. Уникальные решения приходят в голову как озарение, когда в этой голове накоплено уже достаточно общих знаний по основной специальности и смежным областям. Теории тут однозначно недостаточно, а практика должна занимать столько времени, что иногда можно забыть про личную жизнь напрочь. Совершенствование знаний требует исключительно практики. Постоянной и цикличной практики.
Всё это - ВРЕМЯ!
НЕТ магического языка программирования, фреймворка, технологии, которые можно изучить за несколько месяцев и пойти работать за 100-200-999 тысяч рублей/долларов/евро/биткоинов. Работодатели ищут на большие зарплаты либо узкоспециализированных профессионалов с соответствующим многолетним опытом, либо эффективных специалистов, решающих задачи быстро и оптимально. В остальных случаях чаще выгоднее аутсорс, чем взять в штат не особо квалифицированного работника на зарплату.
Есть, конечно, блат. И если у вас есть блат, то вам всё, что написано дальше, наверное, не нужно! Если у вас нет блата, а хочется быстренько устроиться на тёпленькое место с высокой ЗП - мечтать не вредно! Как минимум, это тёпленькое место занято квалифицированным спецом уже много лет. Как максимум, его отдадут не в ваши неопытные руки, а в неопытные руки по блату. В худшем случае, это место отдадут в неопытные руки по блату, даже если у вас эти самые руки уже достаточно опытные. Но это уже на совести работодателя. А тут не об этом.
Изучать программирование, принципы проектирования IT-проектов, создания/поддержания/масштабирования сетевых архитектур и кластерных массивов, разработки/оптимизации систем баз данных и другие области IT сферы нужно исключительно с целью саморазвития как мыслящего и действующего субъекта, а не как вариант заработка. Если отрасль вам действительно интересна и увлекает вас, то у вас еще до начала чтения этого текста должно быть меньше вопросов.
Кратко о себе, чтобы вы примерно прикинули вектор моих знаний и опыта, т.к. если вам интересно кардинально другое направление отрасли, то вы можете не найти ответов на имеющиеся у вас вопросы и с меньшей пользой потратить время на дальнейшее чтение.
Я нигде не работаю. И я не фрилансер, не выполняю чьи-либо заказы, проекты, не продаю свои разработки. Я не имею команды разношёрстных специалистов и разработчиков. Я всё делаю полностью самостоятельно: от аренды и настройки серверов до написания крупных аналитических систем с применением технологии машинного обучения и глубоких нейронных сетей, в частности. Я не работаю публично и суть всех моих проектов в абсолютной уникальности. Хотя я и предполагаю, что таких же, как я, в мире может быть еще сотня и они точно так же считают себя абсолютно уникальными, но также предполагают, что в мире может быть еще сотня таких же, которые...
Кхм! О чем это я?
Я не тим лид, я точно не умею управлять командой, я умею управлять собой и строить свой тайм-менеджмент. Мне приходится работать с базами данных. Чаще всего применяю PostgreSQL(от настройки кластеров до написания функций и запросов). Я работаю с несколькими языками: Python, Go, C, JavaScript, HTML(написаны в порядке убывания объемов написанного кода). Я не увлекаюсь дизайном, т.к. любого рода интерфейсы и веб-страницы создаю исключительно для реализации удобного управления и мониторинга своих проектов. Свою деятельность наиболее точно могу описать как: создание сложных узкоспециализированных аналитических алгоритмов и обеспечение их взаимодействия с интернет-площадками, позволяющими извлечь прибыль за счет спекуляций различными активами. Модный трейдинг, короче говоря. Только я этим занимаюсь тихонько сам для себя, а не ору по округе, что у меня самые точные прогнозы и алгоритмы.
Я не имею специального IT-образования(имею экономическое, считаю его малополезным для себя). Учился всему сам. Но есть одна особенность! Как я считаю, ОЧЕНЬ ВАЖНАЯ! Меня лет с 7 тянуло ко всякой технике и электронике, всегда обволакивало любопытство именно в этом направлении. Несмотря на то, что непосредственно компьютерных дел в части анализа и разработки чего-либо я коснулся лет в 14, первый язык программирования я осознанно начал учить в 23 года. До этого были не очень осознанные(в период 14-18 лет) подходы ко всякому паскалю, делфи и C#. То есть ни одной программы, отходящей от примеров в туториалах, до 23 лет я не написал и не практиковался.
Теперь, отталкиваясь исключительно от своего бэкграунда, я ответу на несколько очень популярных вопросов у людей, пытающихся начать учиться:
1) Куда пойти учиться?
Если есть способности к качественному самостоятельному обучению и безграничный интерес к чему-либо в отрасли IT, то нужно сначала попробовать самостоятельно изучить что-то в векторе этого интереса.
Ваш главный помощник - поисковик(гугл, яндекс, что угодно и удобно). Поисковик за спрос денег не берет(если конечно вы не сидите в интернете через лимитное подключение, но тогда тут не только поисковик обчищает вашу казну).
Ваш главный учитель - множество ресурсов, свободно предоставляющих туториалы по интересующим темам, если они не слишком узконаправлены.
Ваш главный источник ответов на нетипичные вопросы и решение проблем - Stack Overflow. Гигантское количество сложностей, проблем, узкоспециализированных решений и оптимизаций там уже обсуждено и оценено рейтингами. Если не удастся найти решение, то всегда можно свободно обозначить обитателям площадки свои проблемы. Главное делать это грамотно и при полной уверенности, что ни в английском сообществе площадки, ни в русском решения похожей проблемы нет.
Если вы хотите(а лучше если вам необходимо) научиться работать с кластерами, сетями или железным оборудованием(сборка серверов, работа с хабами, маршрутизаторами и вообще любыми железками), а также созданием и поддержкой высоконагруженных систем и проектов, то лучше поискать наставника в этом деле. В процессе изучения таких многогранных и многоуровневых специальностей гарантировано появится огромное количество мелких, но очень важных вопросов, без ответов на которые будет сложно закрепить знания и связать их со смежными знаниями и опытом. И лучше, чтобы на эти вопросы отвечали действительно квалифицированные люди. Выбирая всякие курсы на сайтах типа Скиллбокса(не важно даже в каких направлениях), обязательно ищите и изучайте регалии того, кто заявлен преподом. Тут вы потратите не только время, но и деньги, поэтому подойдите к поиску источника знаний крайне тщательно.
2) Если программирование, то с какого языка или фреймворка начать изучение?
Для начала нужно задать самому себе вопрос "Нахрена?", т.е. для чего эти знания вам нужны.
Если вам нужно сделать обработчик API для взаимодействия с каким-либо сайтом, либо парсер данных с одного или нескольких сайтов, чтобы потом с этими данными что-либо сделать(проанализировать, собрать большую информационную базу, продать исторически накопленные данные), то в большинстве случаев вам будет достаточно изучить Python(версия 3 и выше) и SQL(для работы с БД). Для наиболее оптимального взаимодействия с базами данных и создания архитектур БД под свои нужды желательно еще изучить какую-нибудь из СУБД(PostgreSQL, MySQL, где-то даже SQLite сойдет вполне).
Если нужно работать(обрабатывать) с большими объемами данных, а тем более если нужно это делать быстро, то дорога лежит к Go(более простой) или C/C++(наиболее сложный, но за счёт скорости и гибкости в некоторых задачах безальтернативен). И если Python я достаточно изучил и понял за 2 месяца, то C я изучаю до сих пор(6 лет) и ни чуть не стесняюсь этого.
Если же хочется идти в сторону веб-разработки, то для бэкэнда(серверной части) пригодятся NodeJS, Python для разработки с нуля и/или изучить программные пакеты Apache, Nginx или какие-то другие комплексы, которые имеют "всё в одном". Дополнительно к этому крайне желательно изучать информационную безопасность и SQL(в случае применения БД в проектах). Для фронтэнда(пользовательских интерфейсов, дизайна) вообще много всего существует. Но лучше в этом деле начать с изучения чистого JavaScript, а потом переходить к изучению фреймворков. Я для своих задач выбрал Vue. Мне его достаточно. В зависимости от вида проекта, лучше может подойти другой фреймворк. Ну и язык стилей CSS лишним не будет.
3) Какие знания и образование нужны, чтобы не потратить время впустую, изучая то, что совершенно не понятно?
Образование - вообще без разницы! Вы изучаете ровно то, что хотите, требований к человеку, который сам желает что-то изучить и тем более имеет возможность(доступ в интернет и желание писать запросы в поисковик), предлагаться не может. Из конкретных знаний очень не лишними будут:
а) Математика. И элементарная, и высшая. Я всё это постигал в процессе изучения языков программирования, поэтому это не является обязательным для начала работы с языками.
б) Дискретная математика. Выделяю эту часть математики специально, т.к. она несет для программиста, наверное, наибольшую пользу. Если изучить и понять дискретку, то мышление очень хорошо адаптируется на аналитический лад и постигать многие вещи уже внутри программирования и алгоритмики будет намного проще.
в) Линейная алгебра. Тоже очень полезная для программиста.
г) Алгоритмика. Не выделяется как отдельная наука или подраздел математики, потому что в процессе изучения языков программирования так или иначе изучаешь и алгоритмику. Сам я не изучал отдельно, но вроде есть даже книги, которые достаточного сжато преподносят логику и позволяют выстроить/перестроить свой образ и процесс мышления при работе с кодом. Может помочь в будущем быстрее искать решения для нетипичных задач(потому что для типичных решения вы уже будете знать).
Если действительно многое в процессе изучения математики, смежных наук и, в особенности, языков программирования и алгоритмов будет не понятно и постоянно вызывать большие сложности даже с параллельным практическим применением штудируемых знаний, то возможно(я не могу утверждать на 100%) это просто не ваше. Не для вашего стиля мышления, не для вашего имеющегося багажа знаний. Я встречал и таких людей. Желания действительно через край, любопытства бездонная бочка, но на практике знания не усваиваются и не закрепляются в голове. При этом человек вполне себе легко ориентируется в гуманитарных направлениях деятельности. В таком случае, когда мозг уже адаптирован больше к словам в документах, нежели к цифрам в программном коде, может эффективнее будет совершенствоваться в том, что лучше заходит и понимается?
4) Сколько времени уйдет на изучение языков/математики/алгоритмов/мануалов по настройке серверов, программных пакетов?
Лично у меня на самый простой для моего понимая язык Python ушло 2 месяца чистого изучения с нуля и еще где-то 1 год в процессе практики работы с ним я изучал некоторые специфические, присущие только этому языку, нюансы. На язык Go я потратил где-то 1-1.5 года и только потому, что изучал и практиковался параллельно основной занятости Питоном и SQL. Кстати, SQL тоже дался за пару-тройку месяцев, но только запросная часть. А вот на часть, относящуюся к созданию и управлению структурой БД, а также ее оптимизации - потратил где-то год. Опять же, потому что не было жесткой потребности в этом. Когда мне срочно понадобился C/C++, то что-то базовое и необходимое мне в тот момент я изучил и собрал за неделю. Но чтобы в дальнейшем этом оптимизировать, мне пришлось потратить 3-4 года, постепенно изучая язык и его нюансы. И как я уже отмечал, я до сих пор учу C и это нормально в моем случае.
И я встречал человека, который в течение 1.5 лет медленно изучал Python и практиковался в нём просто потому, что род его деятельности был совершенно иным, а программирование для него было не больше чем просто хобби.
Поэтому всё зависит в первую очередь от потребностей. Если оно нужно или очень-очень хочется как можно быстрее реализовать какой-то проект - получится изучить всё необходимое намного быстрее, чем если подходить к этому только в свободное время по вечерам или выходным на пару часов.
5) Как дополнительно мотивировать себя изучать языки, технологии, а также практиковаться их применять?
Тут всё зависит от текущей занятости. Если желания через край, обучаемость на уровне и уже хоть что-то, что можно применить на практике, изучено и понятно, то при наличии достаточного свободного времени можно попытаться поискать работу, связанную конкретно с изучаемым языком/технологией, но только стажерскую и желательно на полставки. Я соглашусь, что это не самый лучший вариант по причине малого(или крайне малого) количества предложений подобного рода. Но это, например, мой путь. У меня так сложилось, что после универа, в 23 года, я искал работу эникейщиком каким-нибудь(человек-никто или подай-принеси, в общем-то), но найденное оказалось не совсем тем, что ожидалось. Как обычно - объем фактических требований несколько иной, нежели написано в вакансии. Тогда я просто соврал, что знаю Python. Я представлял, что это не очень сложный язык и просто одномоментно поставил себе цель его выучить. За 2 месяца испытательного срока, с помощью полной изоляции себя от общества(8-9 дорога до работы, 9-18 работа, 18-19 дорога домой, 19-02 изучение и практика) в течение рабочей недели и на 90% изоляция по выходным(10-20 изучение и практика, 20-00 отдых ото всего) позволили получить и закрепить все необходимые на тот момент в работе знания. Далее в течение года я изучал всё остальное, что мне было нужно. Потом сменил должность на программиста, чтобы перестать бегать в организации и так проработал 3 года. Начальство было весьма креативно мыслящим, поэтому там же мне пришлось коснуться машинного обучения с нейронными сетками, что в итоге радикально повернуло мою жизнь и развитие в отрасли в ту сторону, в которую двигаюсь до сих пор.
Также неплохой мотивацией будет собственный, хорошо продуманный проект, желание к реализации которого будет чуть ли не выше, чем желание изучить языки, технологии и т.д.
В любом деле главное начать. А потом понять к чему стремишься. Без мишуры, фантазий, догадок. Нельзя идти к какой-то одной цели. То есть на начальных этапах можно, но достаточно скоро необходимо будет определить четкий набор целей, где одна от другой будут не далеко, но они все разные. Так меньше вероятности потерять интерес к изучению и больше возможных побед, которые будут приносить дополнительное вдохновение и мотивацию к дальнейшему прогрессу.
Дорогу осилит идущий!
P. S.: Все изображения предоставлены для свободного использования сервисом pixabay.
Virtual environment python. Виртуальное окружение в питоне
Сам довольно долго игнорировал эту вещь, пока не дошёл до первого деплоя.
Копирую ответ с хабра
"Виртуальное окружение необходимо для того, чтобы решить проблему несовместимости библиотек внутри проекта. Предположим, что вы работаете над каким-нибудь проектом, который использует определенную библиотеку. Затем у вас появляется новый проект в котором вы решили использовать эту же библиотеку, но новой версии, которая по каким-то причинам не совместима со старой. И тут вы можете создать виртуальное окружение для нового проекта, установить в него необходимую версию библиотеки и иметь возможность работать над двумя проектами сразу."
Можно ещё проще. Вы учитесь/программируете на своём пк, ставите разные библиотеки и т.д. И тут вас приглашают в уже функционирующий проект, вы его клонируете к себе, но запустить ничего не получается, у вас python 3.8, а в проекте 3,9 или наоборот, к примеру 3,5. у вас установлена одна версия django, а на проекте другая.
В-общем по тем или иным причинам, определенные версии библиотек могут не дружить друг с другом.
И именно здесь приходит на помощь виртуальное окружение, независимо от того, какие версии чего бы то ни было у вас установлены "глобально", вы можете для любого проекта, создавать отдельное виртуальное окружение и именно для этого проекта устанавливать необходимые библиотеки.
Причин для использования как всегда больше, и нет смысла их все описывать.
Виртуальное окружение логично создавать в папке проекта. То есть в вашей папке с проектами projects есть папка myProject666 (projects/myProject666), внутри этой папки есть папка с проектом, myProject666API (projects/myProject666/myProject666API) и созданная командой папка (projects/myProject666/myEnvName)
установка библиотеки для создания виртуального окружения: pip install virtualenv
создание виртуального окружения: virtualenv myEnvName , где myEnvName - любое название, часто используется venv.
Активация созданного окружения на линукс: source myEnvName/bin/activate
Активация созданного окружения на винде: myEnvName\Scripts\activate
Деактивация: deactivate
После активации ставятся нужные библиотеки и запускается проект будучи "активированным"
В-общем не надо стесняться, используйте virtual environment
Бесплатные курсы на Udemy
До 07.04.2021 можно получить бесплатный доступ к курсам Udemy с использованием купонов.
Machine Learning and Deep Learning in Python & R — Купон APRILMLFR
Python 3 Master Course for 2021 — Купон TRY10FREE42102
HTML5 Ultimate Course — Купон TRY10FREE42102
JavaScript Ultimate Course — Купон TRY10FREE42102
CSS3 Ultimate Course — Купон TRY10FREE42102
Complete JAVASCRIPT with HTML5,CSS3 from zero to Expert 2021 — Купон LEARNING
Front End Web Development Ultimate Course 2021 — Купон TRY10FREE42102
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Как парсить авторизованно. python3, bs4, requests
Работу и принцип парсинга я подробно описываю в видео, здесь же акцентирую именно авторизацию.
Для авторизации нужно из кода отправить запрос на тот же url, на который отправляется запрос, если пытаться залогиниться в браузере.
Пример:
при попытке зайти на пикабу, во вкладке network появляется post запрос auth.php на адрес https://pikabu.ru/ajax/auth.php . Именно этот адрес нужно указывать в session, а сам session используется для того, что не просто авторизоваться, а выполнять все последующие запросы уже будучи авторизованным т.е. через session.post .
Здесь же можно увидеть form data, данные, которые необходимы для успешной авторизации. Тут увы, прикручена капча, поэтому обойти её простыми путями не получится.
Но на большинстве сайтов, чаще всего требуется formdata = {"login": "ВАШЛОГИН", "password": "ВАШПАРОЛЬ"}
сам же запрос на авторизацию выглядит так:
responce = session.post(link, data=data, headers=header).text
где, link - адрес пост запроса во вкладке нетворк.
data - данные form data в этом запросе (в хроме в самом низу)
headers - заголовки запроса (часто хватает user-agent)
После успешной авторизации остальные запросы выполняются так
r = session.get(url, headers=header, params=params)
если грубо то:
POST - для отдачи инфы на сервер.
GET - чтобы получить инфу С сервера.
Почему я советую написать парсер после калькулятора. Здесь сразу можно познакомиться с функциями, типами данных, пост/гет запросами. И самое главное, скорее всего у вас будет возникать куча различных ошибок в терминале. Поиск причин и исправление этих ошибок это основа для перестроения мышления. Ведь самое главное в данной сфере, уметь искать информацию.