Задать вопрос
  • Как мне решить проблему когда сервер вместо json отдает html?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Прежде всего надо понять, что защиту от парсинга пишут не дураки. И так же то, что все защиты разные. Как только в интернете появляется гарантировано работающий рецепт обхода какой-то за защиты, ей сразу меняют. Поэтому в каждом отдельном случае приходится искать способ обхода защиты самостоятельно и быть умнее её разработчиков. В каких-то случаях, вы боретесь с подростком-фралансером, пишущим код для маленького бизнеса со скромным бюджетом, тогда вам придётся столкнуться с чем-то типа проверки заголовков, csrf и тому подобными простыми штуками. В каком-то, вы боретесь с корпорацией, в которой целый отдел отличных опытных разработчиков пишет поведенческий фильтр и валидацию на клиентской стороне. В последнем случае вам придётся применять Selenium, ежемесячно платить за прокси и так же ежемесячно править довольно сложный алгоритм, притворяющий группой людей.
    Ответ написан
    Комментировать
  • Вопрос по тг боту на aiogram?

    @twistfire92
    Python backend developer
    у вас видимо код был написан для 2-й версии aiogram.

    Зайдите в документацию, там сразу же показан пример как запускать. executor больше не используется
    Ответ написан
    Комментировать
  • Python, что правильнее использовать, запуск бота на прямую или крон?

    @q2digger
    никого не трогаю, починяю примус
    правильнее сервис systemd нарисовать
    Ответ написан
    1 комментарий
  • Почему при запросе в python mysql бд выдает ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В MySQL 8.0.2 и выше GROUPS - зарезервированное слово. Если хотите так назвать таблицу или колонку, надо брать название в обратные апострофы - `groups`.
    Ответ написан
    1 комментарий
  • Как работает bot.delete_message?

    @Everything_is_bad
    Ну так ты сам сначала пишешь message.chat.id, потом message.chat_id, это не считая говно кода с вложенным хендлером.
    Ответ написан
    3 комментария
  • Почему результат выполнения функции сохраняется между вызовами?

    IvanU7n
    @IvanU7n
    nothing interesting here
    гугление "python default argument" выдаёт
    Python's default arguments are evaluated once when the function is defined, not each time the function is called
    Ответ написан
    Комментировать
  • Почему результат выполнения функции сохраняется между вызовами?

    Maksim_64
    @Maksim_64
    Data Analyst
    Потому что объект список мутабельный объект rez = []. Ты ожидаешь, что при каждом новом вызове функции у тебя создается пустой список res, а это не так почитай к чему ведет мутабельные типы в качестве значений по умолчанию у параметров функции.

    1. В первом случае ты вызываешь первый раз работает как ожидаешь, но но список res уже создан и существует.
    2. В втором ты оставляешь без изменения свой дефолтный параметр (список), а он то уже заполнен, и он просто добавляет в него.
    3. В третьем случе ты передаешь новый список (новый объект). По этому работает нормально.

    Общий кейс для решения таких проблем как то так.
    def test(n, rez = None):
        if rez is None:
            rez = []
        for i in range(n):
            rez.append(i)
        return rez
    Ответ написан
    Комментировать
  • Как можно шифроваться от сайтов при использовании selenium?

    @rPman
    по типу гугла
    гугл один из сложнейших сайтов для автоматизации, они защищаются от ботов десятилетиями

    Правильно, авторизуешься вручную с сохранением авторизации и переносишь куки в профиль браузера, используемого в selenium

    Если все же нужно именно автоматизировать процесс авторизации, то в общем это симуляция действия пользователя, проверяй нужное ли у тебя сейчас окно, ищи элементы окна в которые нужно вводить текст, дальше в зависимости от паранои владельца сайта, либо напрямую устанавливай значения input либо симулируй нажатия кнопок и действия мыши, скурпулезно учитывая задержки, отслеживая капчи и т.п.

    Если защиты нет то элементы ищутся легко тем же css - document.querySelector('css selector'), полученный объект можно менять типа .value='текст' а ссылки и кнопки кликать .click()
    Ответ написан
    1 комментарий
  • Как загрузить фотку из папки в БД?

    @Everything_is_bad
    Кучу раз было рассказано, не принято фотки хранить в базе, в базе хранят пути к фоткам, в очень редких исключения используют тип blob для бинарных данных. Освой уже гугл, там давно всё рассказано.
    PS про async еще почитай, ты не понимаешь как он работает.
    Ответ написан
    Комментировать
  • Как лучше организовать структуры программы по поиску значения в таблице на Python?

    @dmshar
    Если действительно ОЧЕНЬ большие - то храните в базе данных. В принципе если задача состоит в поиске допуска по диаметру то этого хватит с головой. Задача не сложная, но очень кропотливая.

    Если данные или часть закачаны в ОП, и требуют дальнейшей сложной обработки, то в Рython есть вполне работоспособная структура DataFrame из Pandas, куда такие данные такого типа нормально раскладываются. Экспорт-импорт из DataFrame в SQL реализован там-же.
    Даже непонятно, о чем тут можно еще рассуждать.
    А вот про то, как вы будете из pdf данные вытягивать перед тем, как их погружать в БД - про про это я бы подумал особо, потому как засад на этом пути достаточно много.
    Ответ написан
    Комментировать
  • Как передать один объект в другие объекты и использовать его?

    @maximq
    QA Engineer
    Соблюдайте принципы — DRY (Don’t repeat yourself).
    Используйте наследование классов, подробнее: раз, два
    Вы можете создавать объекты класса и хранить их в массиве:
    # Main class
    class MainClass():
        def __init__(self):
            # этот webdriver передаётся в другие классы. можно считать, что он "главный"
            self.webdriver = None
            self.number_of_class = "Main"
    
    class SubClass(MainClass):
        def __init__(self, number):
            self.number_of_class = number
    
    webdrivers = [SubClass("first_class"), SubClass("second_class"), SubClass("third_class")]
    Ответ написан
    1 комментарий
  • Безопасно ли делать сервер на python sockets?

    alexhadock
    @alexhadock
    Just a tech
    Доброго времени суток и вам.

    Похвально, что вы обучаетесь на практике, это весьма и весьма эффективно.

    Если вы хотите решить задачу с построением умного дома, лучше обратите своё внимание на протокол MQTT, который специально создавался под эту задачу. Есть библиотека для работы с ним на Python - paho-mqtt. Но я бы не стал изобретать велосипеды и использовал бы уже готовое решение, годное для модификации под мои нужды. Например, mosquitto.

    Вопросы безопасности можно закрыть засчёт использования Firewall и разграничения доступа по статическим IP-адресам (гугл вам всё подскажет).
    Ответ написан
    1 комментарий
  • Как сделать, чтобы код работал?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Самого запуска бота в коде нет. Собственно поэтому и ошибок нет без запуска.
    Последней строчкой
    bot.run(TOKEN)

    P.s ознакомьтесь с правилами ресурса и исправьте вопрос, если надеетесь на дальнейшую помощь
    Ответ написан
    Комментировать
  • Что будет если многократно закладывать переменную в другую переменную?

    fenrir1121
    @fenrir1121
    Начни с документации
    Открываете любую книгу по питону для начинающих и читаете, что переменная это просто ссылка.
    Все ваши 100 позиций будут указывать на один и тот же объект в памяти.
    Ответ написан
    2 комментария
  • Как исправить ошибку с недостающим аргументом и с его отсутствием?

    @Everything_is_bad
    Подскажите что делать?
    решать более простые задачи, боты пока не твой уровень. Ты ведь даже не пытаешься чуток подумать, поанализировать текущее состояние, вот нет у тебя в функции определение message, зато есть такое поле в call, но ты упорно это не видишь.
    Ответ написан
    7 комментариев
  • Почему бот не показывает кнопки в сообщениях?

    febday
    @febday
    Потому что вы для чего создали две экзепляра InlineKeyboardMarkup и записали их в разные переменные.
    Я не совсем понимаю вашу логику, но видимо она есть

    В функции showChannels вы возвращаете keyboard, в который ничего не записано, потому что всё записывается в markup
    Удалите строку keyboard = types.InlineKeyboardMarkup(row_width=1)
    И возвращайте markup:
    return markup

    Вот так должно быть:
    def showChannels():
        markup = types.InlineKeyboardMarkup()
        for channel in sponsorChannels:
            markup.add(types.InlineKeyboardButton(text=channel[1], url=channel[2]))
        markup.add(types.InlineKeyboardButton(text="Я ПОДПИСАЛСЯ", callback_data="subchanneldone"))
        return markup
    Ответ написан
    Комментировать
  • Как получить следующее сообщение, отправленное ботом?

    Vindicar
    @Vindicar
    RTFM!
    Не имел дела с VKBottle, но я здорово подозреваю, что функция отправки сообщения возвращает объект, описывающий отправленное сообщение. Возьми id оттуда.
    Ответ написан
    3 комментария
  • Как вызвать функцию, название которой записано в переменной?

    Vindicar
    @Vindicar
    RTFM!
    Правильное решение - иметь словарь функций.
    funcs = {
        'test': test
    }
    
    cmd = input('Введите команду: ')
    func = funcs.get(cmd, None)
    if func is None:
        print(f'неизвеcтная команда {cmd}')
    else:
        try:
            result = func()
        except Exception as err:
            print("Ошибка:", err)
        else:
            print("Результат:", result)
    Ответ написан
    1 комментарий
  • Каким образом можно обучить ИИ распознавать лицо python?

    @rPman
    Вроде бы openvino может работать без tensorflow (и скорее всего умеет работать с intel ускорителями), вот пример их модели распознавания эмоций
    Ответ написан
    1 комментарий
  • Как вычленить из текста ФИО на python, при том что конкретных шаблонов нет?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В общем случае эта задача не решается на 100% по определению.
    Вы говорите, что вокруг фамилий у вас произвольный текст, а это значит, что среди этого текста попадаются слова, которые чем-то похожи на ФИО, но не ФИО, или имя отчество, без фамилии, или что-то вроде "светкин василёк Игоревич". Можно это считать таким экзотическим ФИО, или отчество тут просто отдельно стоит и искать его не надо?
    В любом случае схема решения примерно такая. Если у вас есть знаки препинания, то можно разбить по ним фрагменты текста, ФИО не разделяется знаками препинания (кроме дефиса), но дефис отличается от тире пробелами по бокам.
    Далее у вас есть цепочки слов. Если в цепочке N слов, то в ней, можно сказать, N-2 кандидата на ФИО.
    Каждая трока-кандидат на ФИО может быть проклассифицирована по ряду признаков, свидетельствующих в пользу того, является ли эта тройка ФИО. Осталось только определить набор признаков и веса этих признаков. Каждый признак определяет два показателя: 1) насколько этот признак добавляет шансов тройке быть ФИО; 2) на сколько несовпадение по этому признаку отнимает шансов быть ФИО. Показатели определяются от нуля до 1 и перемножаются. Подбор признаков и их показателей будет настройкой вашего классификатора.
    Тут дальше можно двигаться разными путями.
    Часть детектов вы сможете надёжно определять по окончанию отчества.
    Часть признаков у вас будут словарными словами, которые, по вашему, не могут быть именем и\или фамилией.
    На этом этапе уже будет довольно хорошая детекция. Вопрос что вам важнее, отсутствие false positive, или отсутствие false negative.
    Так же по-разному может повезти с входными данными. Если у вас много "ловушек" в виде разбросанных по тексту бесхозных отчеств, если у вас много очень странных имён... в общем тут вам никто не выдаст идеальное решение. При отсутствии четкого ТЗ результатом будет расплывчатое ХЗ.
    В целом обычно на настройку таких классификаторов под текст на первое время сажают людей. У нас сейчас есть ChatGPT и ему, думаю, вполне можно скидывать наборы имён, чтобы он вычеркивал те, которые вряд ли именами являются. Если вы приняли, что какое-то слово не может являться именем, или фамилией, то такое решение хорошо бы кэшировать, а затем для консистентности придерживаться аналогичного в других случаях.

    Странная у вас задача, сударь. Выглядит как учебная. В этом случае рассуждений вроде приведенных мной здесь хватило бы для успешного ответа на собеседовании.
    Ответ написан
    2 комментария