• Не понимаю почему код выводит пустой список?

    Vindicar
    @Vindicar
    RTFM!
    А ты запиши содержимое req в файл, всё сразу понятно станет...

    Ваш браузер не смог пройти проверку. Для доступа к веб-ресурсу включите в настройках вашего веб-браузера поддержку JavaScript или воспользуйтесь другим веб-браузером, который поддерживает JavaScript.


    Популярные сайты парсить - не в носу ковырять, они от этого защищаются.

    EDIT:
    NaoFumi008, а причём тут твой браузер? Твой код сам выполняет запрос, браузер ему не нужен.
    Очень советую почитать про то, как вообще работает Web.
    Кратко

    Клиент (браузер или иная программа) делает HTTP запрос, посылая запрашиваемую часть URL и заголовки (в наиболее простом случае).
    Серверная часть отвечает на запрос тем или иным документом (например, просто текстом) и своими заголовками (что это за документ, его размер, устанавливаемые cookies, и т.д.).
    Клиент принимает документ и обрабатывает его. Так, браузеры находят в документе JS-скрипты и выполняют их.
    Эти скрипты могут выполнять дополнительные запросы, которые обслуживаются по тому же принципу.
    Сервер может сохранять сведения о запросах и сопоставлять их.

    Есть две основных точки проверки клиента: непосредственно заголовки запроса (например, передан ли Referer? Переданы ли соответствующие cookies? Похож ли на правду User-Agent? Переданы ли другие необязательные, но типовые заголовки, вроде Accept-Language?) и обработка скриптов клиентом. Скажем, если клиент сделал запрос на одну страницу, но скрипт на этой странице не сделал второй запрос - возможно, клиент не браузер, а бот. Стоит его запомнить и попытаться пометить.
    В твоём случае, скорее всего, отрабатывает первый сценарий, но ты можешь напороться и на второй тоже.

    Выхода два: либо пытаться методом проб и ошибок выяснить, что проверяет сайт (например, сделать запрос браузером, открыть панель разработчика и скопировать заголовки запроса целиком). Либо использовать "безголовый" браузер и пакет для управления им, вроде selenium. Первый вариант долгий, второй очень жадный на ресурсы. Ни один не даёт гарантии, так как selenium вроде всё же можно обнаружить.
    Ответ написан
    7 комментариев
  • Это синтаксический сахар или есть какая-то существенная разница?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В Java Language Spec - Глава 10.2 https://docs.oracle.com/javase/specs/jls/se19/jls19.pdf
    Ответ написан
    Комментировать
  • Может ли api-сервер отправить 200 браузеру, и при этом продолжить выполнять вызванный браузером запрос?

    paran0id
    @paran0id
    Умный, но ленивый
    В таких случаях положено возвращать 202, и выполнять задачу асинхронно на сервере. Можно вернуть клиенту id задачи и предоставить api для проверки статуса задач по id.
    Ответ написан
    Комментировать
  • Как делается администрирование на сайтах?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    Для создания админки используется всё то же самое, что и для самого сайта.
    Правда за счёт того что требования к ней сильно ниже - можно спокойно использовать всякие готовые компоненты и часто можно не заморачиваться с дизайном.

    Но в общем случае - всё то же самое, что и с просто сайтом. Ничего дополнительно изучать не нужно.
    Ответ написан
    Комментировать
  • Как на Python3.10 на хостинге Ubuntu импортировать модули?

    Vindicar
    @Vindicar
    RTFM!
    А) Найди pip от питона 3.10 и запусти его явно. Например, командой pip3.10.
    Б) Используй виртуальное окружение, и ставь пакеты в него. Только убедись, что используешь правильный питон для создания venv.
    Ответ написан
    Комментировать
  • To many values to unpack как фиксить?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь распаковку коллекции (т.е. оператор вида a, b, c = some_value), тебе нужно быть уверенным, что some_value содержит в точности столько значений, сколько переменных ты распаковываешь.
    Если это не так, есть три варианта:
    1. Если ты знаешь, сколько значений в возвращаемой коллекции, ты можешь просто добавить нужное количество переменных. a, b, c, _ = some_value. Символом _ обычно обозначаются неиспользуемые переменные/параметры.
    2. Если ты не знаешь, сколько значений в возвращаемой коллекции, или это число меняется, можно не выпендриваться, а работать с индексами. Но тебе нужно быть уверенным, что у тебя всегда есть как минимум нужное число значений.
    a = some_value[0]
    b = some_value[1]
    c = some_value[2]
    # и так далее.

    3. Есть ещё вариант распаковки, который работает, если ты значешь, что значений больше, чем нужно:
    a, b, c, *_ = somevalue

    Я бы посоветовал второй вариант
    Ответ написан
    Комментировать
  • Почему могут быть одни отказы по резюме?

    @nApoBo3
    В огромно кол-ве компаний у HR есть четкий фильтр по опыту, вы его не проходите.
    Большая часть компаний осуществлявших массовые стажировки начинающих специалистов из РФ ушли. Рынок младших специалистов и до этого, последние несколько лет, был не сахар, а сейчас можно сказать он совсем сдулся.
    Джуны реально должны пробивать лбом стены, чтобы попасть к более менее приличное место.
    Так, что держитесь за текущую позицию, набирайте 2-3 года опыта, все это время учитесь.
    Ответ написан
    Комментировать
  • Как сделать шифр на питон?

    Vindicar
    @Vindicar
    RTFM!
    str.maketrans() чтобы сделать таблицу преобразований
    str.translate() чтобы её использовать.
    Правда, этот подход работает только для преобразований "1 символ -> 1 символ".
    Если тебе нужно что-то другое, то, как написали выше, словарь в помощь.
    Ответ написан
    2 комментария
  • С помощью чего сделать шаблон для страницы html?

    Kiriniy
    @Kiriniy
    Графический и веб-дизайнер
    Ну раз есть php на нём и делайте. Он в общем-то как шаблонизатор и начинался. Отдельные блоки (навигация, подвал и тд) выносите в файлы и вставляете в нужном месте через include. А под отдельные элементы, как телефон например, можно создать один общий файлик с переменными и выводить в нужных местах через echo.
    Ответ написан
    4 комментария
  • Почему на хабре удаляются комментарии?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Потому что тут не соцсеть. Тянка красивая - но зачем она здесь? И комментарии, и ответы, и даже учетку вообще - могут удалить модераторы, переписываться с которыми крайне не рекомендуется :) Читайте правила Сервиса.
    Ответ написан
    Комментировать
  • Potsgres 13 - как реализовать систему Master-Master?

    Melkij
    @Melkij
    PostgreSQL DBA
    Никак.

    Если очень хотите головной боли и новых аварий по ночам вместо того чтобы спокойно спать - возьмите какой-нибудь autofailover типа patroni и прочих.

    Критичная проблема фундаментальна - CAP теорема в целом и последствия split brain в частности.
    Ответ написан
    2 комментария
  • Как можно ускорить запрос или какой индекс использовать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну во первых смысл неправильный. У тебя - взаимоисключающие предикаты. Поэтому надо использовать OR.
    Уже написали выше про это.

    Попробуй так. Должно быть быстрее.

    SELECT * FROM data WHERE name LIKE "Иван%";

    И построй индекс по name. А лидирующий метасимвол % лучше не ставить т.к. это отключает
    возможность использования классическийх B-Tree индексов.
    Ответ написан
    Комментировать
  • Как из fetchall() сделать строку?

    Vindicar
    @Vindicar
    RTFM!
    Как, как... Каком кверху!
    Итерируешься по списку через for row in cursor:, распаковываешь кортеж через login, pass = row (ну или по индексу login = row[0]), дальше с переменными делаешь что нужно.
    Азы языка! Если ты их не знаешь, какого баклажана берёшься за БД?

    Кроме того, зачастую делать fetchall() и не требуется, можно перебрать строки по одной итерируясь прямо по курсору. Экономит память.
    Ответ написан
    Комментировать
  • С чего начать разработку своего приложения?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    "Выращивайте" проект.
    Напишите, для начала, MVP - какую-то штуку, которая собирает статистику, хотя бы одного захардкоженного матча/турнира и выводит в консоль.
    Потом расширяйте.
    Ответ написан
    3 комментария
  • Как в сервисах реализуются периодически выполняемые задачи?

    vabka
    @vabka Куратор тега Веб-разработка
    Токсичный шарпист
    cron например, либо свой демон, который будет смотреть на время и периодически запускать нужные задачи.

    А чтобы несколько серверов не конфликтовали друг с другом - надо либо как-то их оркестрировать, чтобы работа разделялась на несколько серверов (Нужно смотреть на конкретную задачу, чтобы сказать, как можно разделить и можно ли вообще), либо делать распределённые блокировки.
    Ответ написан
    Комментировать
  • Что лучше, по одной или несколько записей при INSERT?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Запись пакетом быстрее и менее нагрузочна, но выше вероятность потери при сбоях.

    PS. 40 записей в секунду - это в общем-то ни о чём..
    Ответ написан
    Комментировать
  • Как запустить асинхронную функцию внутри синхронной flask?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала, проверка на вменяемость. Асинхронному боту для работы нужен рабочий цикл-реактор (event loop). Где и как ты его запускаешь, с учётом того, что Flask тоже требует рабочий цикл, а у тебя, вроде как, один поток?

    Я бы посоветовал использовать асинхронный веб-фреймворк. Например, доки на Flask упоминают Quart как максимально похожий, но изначально асинхронный фреймворк. Тебе всё ещё придётся разобраться, как параллельно запустить две длительные корутины (рабочий цикл Quart и рабочий цикл бота), но это уже решаемо. Вместо Quart можно использовать любой другой асинхронный веб-фреймворк.

    Альтернативно, можно запустить фласк и бота в разных потоках. Мешать асинхронность с многопоточностью - тоже та ещё идея, но если очень неохота уходить от Flask, то можно попробовать. Однако в этом случае нужно будет очень осторожно выполнять вызовы методов бота. В документации есть пример, как вызвать корутину в другом потоке ОС и дождаться ответа от неё.
    Ответ написан
    1 комментарий
  • Как избавиться от большого количества конструктий if-else?

    @dima20155
    you don't choose c++. It chooses you
    Есть также паттерны, например, цепочка обязанностей, которые позволяют немного упростить такие проверки, но этот паттерн полезен для сложных проверок/команд
    Ответ написан
    Комментировать
  • Как найти угол между двумя точками?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    угол между ДВУМЯ точками всегда 180 градусов, так как они ВСЕГДА находятся на одной прямой.
    Ответ написан
    Комментировать
  • Работать в IT или продолжить учебу?

    php666
    @php666
    PHP-макака
    учимся ради "бакалавр"
    на работу в it берут не за "бакалавру", а за знания.
    кому сейчас вообще нужны эти корочки?
    Ответ написан
    Комментировать