Поддельный User-Agent

Одна из примитивных защит сайтов от парсинга – проверка HTTP заголовка User-Agent, который содержит наименование веб-браузера или клиента, делающего запрос. Если этого заголовка нет, то сервер может не выполнить запрос, раскусив, что его делает робот, а не человек. Обход защиты – имитация реального User-Agent браузера библиотекой fake_useragent. Установка: Использование: ua.random – агент случайного браузера (с…

С Новым Годом 2020!

​​Дорогие друзья! 🎄 Поздравляю вас всех с наступающим Новым Годом 2020! 🎄 Желаю вам счастья, здоровья, хорошего настроения! Поменьше багов в коде и побольше интересных проектов! А также любви, путешествий, достижений, новых открытий и позитивных эмоций! Я искренне рад и благодарен, что вы читаете наш сайт и канал. В новом году я буду радовать вас…

Переопределение свойств класса

В заметке расскажу, как переопределить свойства (@property) в классе-наследнике. Как оказалось, это не тривиально и существуют несколько вариантов, различных между собой. Допустим есть базовый класс со свойством: Ситуация А. В классе-наследнике мы хотим переопределить ТОЛЬКО сеттер, чтобы он делал что-то еще помимо того, что умеет в базовом классе. Это не так и тривиально: Ситуация B.…

​​Unicode по имени

Вы знали, что в строке Python 3 можно вставлять символы по их названию в юникод-таблице? Допустим нужны вам стрелки: Найти юникод символы и их имена удобно с помощью онлайн-сервисов.  Да, конечно, в Python 3 вы можете прямо в код вставлять любые юникод символы без их кодов и имен. Но профессиональнее – вставлять символы по именам,…

​​collections.deque – очередь Python

deque – коллекция двухсторонней очереди, которая похожа на список, за исключением того, что добавлять и удалять элементы можно либо в начало (слева), либо в конец (справа). Можно использовать и как стек. Реализована через двусвязный список. Благодаря этому, операции добавления или удаления элемента с любого конца deque имеют сложность O(1). Доступ к произольному элементу – O(n).…