А это парсер для следующего сайта - https://www.qifa.ru/catalog/obuv.
Он берёт и сохраняет информацию о каждом товаре. И кстати. В самом начале кода есть переменная SPEED. Сейчас в ней записана строка 'h'. С этим значением парсер за 13 минут сохраняет в excel таблицу около 36 тысяч товаров. В этом режиме я немного ускорил скорость парсинга с помощью асинхронности и многопоточности.
А если записать в эту константу строку 'l', то парсинг будет длиться больше 10 часов, но зато будет более подробная информация о каждом товаре. На самом деле эту цифру можно уменьшить, если добавить асинхронность и многопоточность ещё и в этот режим, но я не успел сегодня это сделать, так что ждите завтра.
Но запомните, в константу SPEED можно записать либо 'h', либо 'l', и никакое больше значение.
И ещё. Перед запуском кода не забудьте скачать библиотеку lxml. Я её не импортировал, но она нужна.
Он берёт и сохраняет информацию о каждом товаре. И кстати. В самом начале кода есть переменная SPEED. Сейчас в ней записана строка 'h'. С этим значением парсер за 13 минут сохраняет в excel таблицу около 36 тысяч товаров. В этом режиме я немного ускорил скорость парсинга с помощью асинхронности и многопоточности.
А если записать в эту константу строку 'l', то парсинг будет длиться больше 10 часов, но зато будет более подробная информация о каждом товаре. На самом деле эту цифру можно уменьшить, если добавить асинхронность и многопоточность ещё и в этот режим, но я не успел сегодня это сделать, так что ждите завтра.
Но запомните, в константу SPEED можно записать либо 'h', либо 'l', и никакое больше значение.
И ещё. Перед запуском кода не забудьте скачать библиотеку lxml. Я её не импортировал, но она нужна.
👍6
Я обещал ещё вчера выложить обновлённую версию парсера, но немного опоздал. И кстати, старая версия не будет работать, потому что на момент публикации её в канал, сайт который я парсил немного изменился. А ещё во время теста парсера я сделал так, что он сохраняет только первые 10 страниц, и забыл потом убрать это ограничение. Так что ловите новый. Он должен работать, потому что я протестировал его сегодня утром. И ещё раз повторю. У него есть две скорости работы. Они определяются константой SPEED в начале кода. Если в неё записать строку 'h', то он будет работать в быстром режиме, а если записать строку 'l', то в медленном.
И ещё. Последняя версия кода Дайвинчик имела пару ошибок, которые я не заметил. Я их исправил, и новый код можно найти в этом сообщении -https://t.iss.one/pythonproga/267 .
И ещё. Последняя версия кода Дайвинчик имела пару ошибок, которые я не заметил. Я их исправил, и новый код можно найти в этом сообщении -https://t.iss.one/pythonproga/267 .
👍10🔥2❤1
А это код бота телеграмм, который позволяет скачивать видео с Ютуба.
Для начала нужно создать сервисный аккаунт в Google Cloud.
Для этого прочитайте эту страницу - https://support.google.com/a/answer/7378726?hl=ru .
И когда вы будете включать API, то найдите Google Drive API.
Затем зайдите в гугл диск в том аккаунте, в котором вы создали сервисный аккаунт. Создайте любую пустую папку и откройте в ней доступ для email сервисного аккаунта. Этот email выглядит примерно так - [email protected] .
Потом в коде в константе SERVICE_ACCOUNT_FILE
нужно будет указать путь к JSON файлу, который вы получите. А в константе TOKEN необходимо указать токен телеграмм бота.
И теперь выполняем эту команду: pip install --upgrade google-api-python-client
Как скачать другие библиотеки надеюсь вы поймёте
Для начала нужно создать сервисный аккаунт в Google Cloud.
Для этого прочитайте эту страницу - https://support.google.com/a/answer/7378726?hl=ru .
И когда вы будете включать API, то найдите Google Drive API.
Затем зайдите в гугл диск в том аккаунте, в котором вы создали сервисный аккаунт. Создайте любую пустую папку и откройте в ней доступ для email сервисного аккаунта. Этот email выглядит примерно так - [email protected] .
Потом в коде в константе SERVICE_ACCOUNT_FILE
нужно будет указать путь к JSON файлу, который вы получите. А в константе TOKEN необходимо указать токен телеграмм бота.
И теперь выполняем эту команду: pip install --upgrade google-api-python-client
Как скачать другие библиотеки надеюсь вы поймёте
👍10😱2
А это новая версия бота, который скачивает видео с Ютуба. Чтобы этот код заработал, нужно сделать всё тоже самое, что и раньше (прочитайте этот пост - https://t.iss.one/pythonproga/274).
А теперь давайте я объясню, что изменилось.
1. Теперь вместе с видео будет скачиваться и звук (но в отдельном файле).
2. Если раньше я сохранял id загруженных файлов в гугл диск в список, и через 10 минут просто удалял файлы по id из этого списка, то теперь я получаю список загруженных файлов, и проверяю дату их создания.
3. Если был плохой интернет, то поднимались ошибки по типу TimeoutError или Connection Error, и код их просто не обрабатывал. Сейчас я это исправил.
И ещё в старой версии было куча багов (и скорее всего ни есть и в этой)
А теперь давайте я объясню, что изменилось.
1. Теперь вместе с видео будет скачиваться и звук (но в отдельном файле).
2. Если раньше я сохранял id загруженных файлов в гугл диск в список, и через 10 минут просто удалял файлы по id из этого списка, то теперь я получаю список загруженных файлов, и проверяю дату их создания.
3. Если был плохой интернет, то поднимались ошибки по типу TimeoutError или Connection Error, и код их просто не обрабатывал. Сейчас я это исправил.
И ещё в старой версии было куча багов (и скорее всего ни есть и в этой)
👍79
А это третья версия Дайвинчика, и давайте я расскажу, почему я её выпустил.
Две предыдущие версии в принципе работали, но только если пользователей было меньше 50-60.
А проблема заключалась в том, что для каждого пользователя создавался отдельный поток, и в нём проверялось лайкнул ли кто-то пользователя, или нет. И если было слишком много потоков, то появлялась ошибка, которая говорила о том, что невозможно создать ещё один поток.
Теперь я изменил систему лайков, и все лайки стали проверятся в одном потоке для всех пользователей.
Внимание! Бот будет работать только с версией python 3.9!
Две предыдущие версии в принципе работали, но только если пользователей было меньше 50-60.
А проблема заключалась в том, что для каждого пользователя создавался отдельный поток, и в нём проверялось лайкнул ли кто-то пользователя, или нет. И если было слишком много потоков, то появлялась ошибка, которая говорила о том, что невозможно создать ещё один поток.
Теперь я изменил систему лайков, и все лайки стали проверятся в одном потоке для всех пользователей.
Внимание! Бот будет работать только с версией python 3.9!
👍26
Этот код читает запросы из txt файла, а затем задаёт их в гугле и выбирает вкладку фото, а затем сохраняет в таблицу ссылку на первое попавшееся изображение.
Чтобы этот код заработал необходимо кроме импортированных библиотек, скачать ещё и библиотеку 'lxml'.
Затем необходимо создать файл 'queries.txt' и в нём писать каждый запрос на разной строчке. Пример:
машина
гайка
болт
самолёт
Дальше необходимо скачать Firefox и geckodriver.exe (драйвер для управления браузером Firefox). Ну или же вы можете изменить код и использовать любой другой браузер.
И последний шаг. В начале кода есть две константы - TOKEN и ID. В TOKEN вам необходимо записать токен вашего телеграмм бота (если его нет, то создайте), а в ID ваш message.from_user.id, ну либо message.chat.id (точно не помню).
Чтобы этот код заработал необходимо кроме импортированных библиотек, скачать ещё и библиотеку 'lxml'.
Затем необходимо создать файл 'queries.txt' и в нём писать каждый запрос на разной строчке. Пример:
машина
гайка
болт
самолёт
Дальше необходимо скачать Firefox и geckodriver.exe (драйвер для управления браузером Firefox). Ну или же вы можете изменить код и использовать любой другой браузер.
И последний шаг. В начале кода есть две константы - TOKEN и ID. В TOKEN вам необходимо записать токен вашего телеграмм бота (если его нет, то создайте), а в ID ваш message.from_user.id, ну либо message.chat.id (точно не помню).
👍10
Всем привет! Сегодня я написал код, который мониторит определённый телеграмм канал, и если на нём появится новый пост, то код автоматически его скопирует и выложит на вашем телеграмм канале. Но чтобы код заработал сначала нужно скачать следующие библиотеки:
tgcrypto
pyrogram
Затем заходим сюда, указываем свой номер телефона и переходим по ссылке API development tools. Там мы создаём web приложение. Теперь берём App api_id и App api_hash, и указываем их в коде в константах API_ID и API_HASH.
Теперь нам нужно узнать id телеграмм канала, который код будет мониторить. Сначала подписываемся на этот канал, а затем пересылаем любой пост из этого канала этому боту: @getmyid_bot. Он вам ответ сообщением, в котором будет пунктик Forwarded from chat. И тот ID который в этом пункте указан мы сохраняем в константу CHANNEL_ID. Затем проделываем тоже самое с нашим каналом, и ID указываем уже в константе YOUR_CHANNEL_ID.
Поздравляю! Теперь вы можете запустить код!
tgcrypto
pyrogram
Затем заходим сюда, указываем свой номер телефона и переходим по ссылке API development tools. Там мы создаём web приложение. Теперь берём App api_id и App api_hash, и указываем их в коде в константах API_ID и API_HASH.
Теперь нам нужно узнать id телеграмм канала, который код будет мониторить. Сначала подписываемся на этот канал, а затем пересылаем любой пост из этого канала этому боту: @getmyid_bot. Он вам ответ сообщением, в котором будет пунктик Forwarded from chat. И тот ID который в этом пункте указан мы сохраняем в константу CHANNEL_ID. Затем проделываем тоже самое с нашим каналом, и ID указываем уже в константе YOUR_CHANNEL_ID.
Поздравляю! Теперь вы можете запустить код!
😱12👍6❤5🤔4🔥3
Спустя долгое время я публикую пост. И это спамер для любого мессенджера. Его написал бы каждый из вас за пару минут, но у меня нет идей получше. Текст, которым он будет спамить нужно указать в переменной text. Затем нужно поставить курсор в строку ввода в мессенджере и нажать Ctrl+Space. Чтобы остановить спамер нужно нажать и удерживать Ctrl+Alt. И ещё для нужно будет установить библиотеку keyboard
❤22👍15🤩5🔥2😱2
А это таймер, написанный на tkinter, и логично что для его запуска вам придётся скачать эту библиотеку.
Когда вы запустите его, в первом окошке вам нужно будет указать минуты, а во втором секунды. Когда время истечёт, окошко просто исчезнет, но в 18 строчке, после комментария можно написать код, который будет выполняться по истечении времени.
Когда вы запустите его, в первом окошке вам нужно будет указать минуты, а во втором секунды. Когда время истечёт, окошко просто исчезнет, но в 18 строчке, после комментария можно написать код, который будет выполняться по истечении времени.
👍14❤3👏2
Сетевой Вестник — @netpost, следим за IT-повесточкой и наблюдаем сбои по странам СНГ.
Да и не только новости, но и полезные мануалы, авторская аналитика и оперативный контент из подземелья самого Telegram.
Ссылочка ниже: ⬇️
t.iss.one/netpost
Да и не только новости, но и полезные мануалы, авторская аналитика и оперативный контент из подземелья самого Telegram.
Ссылочка ниже: ⬇️
t.iss.one/netpost
👍5
Научись кодить правильно!
Существуют платные курсы и шпаргалки от SkillBox, GeekBrains и других.. Но зачем они нужны, если все самые свежие шпоры слили в Code Guru! Не упусти возможность, чтобы научиться писать красиво!
https://t.iss.one/+WI23FnNK-JdjZTIy
Твой помощник - Code Guru
Существуют платные курсы и шпаргалки от SkillBox, GeekBrains и других.. Но зачем они нужны, если все самые свежие шпоры слили в Code Guru! Не упусти возможность, чтобы научиться писать красиво!
https://t.iss.one/+WI23FnNK-JdjZTIy
Твой помощник - Code Guru
👍10👎2😁1
Этот код тоже позволяет общаться двум пользователям друг с другом прямо через бот. Админ будет отвечать через консоль на сервере, на котором запущен этот код. А это значит, что ID админов указывать не нужно. Единственое, нужно будет указать токен от бота в 13 строчке.
❤14👍5
Класс — в объектно-ориентированном программировании, модель для создания объектов определённого типа, описывающая их структуру (набор полей и их начальное состояние) и определяющая алгоритмы (функции или методы) для работы с этими объектами.
В Python класс объявляется с помощью ключевого слова class. Вот пример самого простого класса:
class Python:
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
Базовые принципы ООП:
Абстракция — отделение концепции от ее экземпляра;
Полиморфизм — реализация задач одной и той же идеи разными способами;
Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
В Python класс объявляется с помощью ключевого слова class. Вот пример самого простого класса:
class Python:
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
Базовые принципы ООП:
Абстракция — отделение концепции от ее экземпляра;
Полиморфизм — реализация задач одной и той же идеи разными способами;
Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
❤21👍2
Магические методы в Python:Создание и удаление объектов
__new__(cls[, ...]) — метод создания типа класса.
__init__(self[, ...]) — конструктор класса. Используется при определении объектов.
__del__(self) — деструктор класса. Вызывается автоматически сборщиком мусора, практически никогда не используется. Вызывается непосредственно перед удалением из памяти экземпляра класса.
Общие свойства объектов
__repr__(self) — информационная строка об объекте. Выводится при вызове функции repr(...) или в момент отладки.
__str__(self) — вызывается при вызове функции str(...), print(...), возвращает строковый объект.
__bytes__(self) — аналогично str(self), только возвращается набор байт.
__format__(self, format_spec) — вызывается при вызове функции format(...) и используется для форматировании строки с использованием строковых литералов.
Методы сравнения объектов между собой
__lt__(self, other) — определяет поведение оператора сравнения «меньше», <.
__le__(self, other) — определяет поведение оператора сравнения «меньше или равно», <=.
__eq__(self, other) — определяет поведение оператора «равенства», ==.
__ne__(self, other) — определяет поведение оператора «неравенства», !=.
__gt__(self, other) — определяет поведение оператора сравнения «больше», >.
__ge__(self, other) — определяет поведение оператора сравнения «больше или равно», >=.
__hash__(self) — вызывается функцией hash(...) и используется, чтобы доказать его уникальность. Например, чтобы добавить объект в set, frozenset, или использовать в качестве ключа в словаре dict.
__bool__(self) — вызывается функцией bool(...) и возвращает True или False в соответствии с реализацией. Если данный метод не реализован в объекте, то при вызове функции bool(...) будет вызываться метод len
Доступ к атрибутам объекта
__getattribute__(self, item) — вызывается при обращении к атрибуту объекта через x.y, где x — объект, а y — атрибут.
__getattr__(self, item) - вызывается если в методе getattribute поднята ошибка AttributeError
__setattr__(self, key, value) — вызывается при обращении к атрибуту объекта с последующим определением значения переданного атрибута. Например: x.y = 1, где x — объект, y — атрибут, а 1 — значение атрибута.
__delattr__(self, item) — вызывается при ручном удалении атрибута у объекта с помощью del x.y, где x — объект, а y — атрибут.
__dir__(self) — вызывается методом dir(...) и выводит список доступных атрибутов объекта.
Создание последовательностей
__len__(self) — вызывается методом len(...) и возвращает количество элементов в последовательности.
__getitem__(self, key) — вызывается при обращении к элементу в последовательности по его ключу (индексу) в таком синтаксисе - x['key'], где x - экземпляр класса.
__setitem__(self, key, value) — вызывается при присваивании какого-либо значения элементу в последовательности в таком синтаксисе - x['key'] = value, где x - экземпляр класса.
__delitem__(self, key) — вызывается при удалении значения в последовательности по его индексу (ключу) с помощью синтаксиса ключевого слова del в таком синтаксисе - вуд x['key'], где x - экземпляр класса.
__missing__(self, key) — вызывается в случаях, когда значения в последовательности не существует.
__iter__(self) — вызывается методом iter(...) и возвращает итератор последовательности, например, для использования объекта в цикле.
__reversed__(self) — вызывается методом reversed(...) и аналогично методу iter возвращает тот же итератор, только в обратном порядке.
__contains__(self, item) — вызывается при проверке принадлежности элемента к последовательности с помощью in или not in.
Унарные операторы
__neg__(self) — определяет поведение для отрицания (-a)
__pos__(self) — определяет поведение для унарного плюса (+a)
__abs__(self) — определяет поведение для встроенной функции abs(...)
__invert__(self) — определяет поведение для инвертирования оператором ~
Обычные арифметические операторы
__add__(self, other) — сложение, оператор +
__sub__(self, other) — вычитание, оператор -
__mul__(self, other) — умножение, оператор *
❤13👍4🥰1