Задать вопрос
  • Скрипт на Python работает медленно, как ускорить?

    Vindicar
    @Vindicar
    FermerBilli, ну он подошёл бы для обычного сайта, который никак не пытается защищаться от парсеров.
    Чем популярнее сайт как цель парсинга, тем жестче там обычно меры защиты.
    Желающих попарсить гугл - море, и как следствие - иногда человеку трудно убедить гугл, что он человек, не то что парсеру.
    Тебе выше подсказали, что нужна имитация браузера (selenium), причем трудноотличимая отреального браузера (undetected-chromedriver), причем заходящая в сеть с диапазонов адресов, принадлежащих коммерческим провайдерам, а не хостингам.
    И в ряде случаев и этого может не хватить, например, может потребоваться история посещений (т.н. прогрев, чтобы бот побегал по разным сайтам где есть гугловская реклама или иные метрики), может потребоваться закос под скорость работы человека... факторов может быть много, а их точный список знают только инженеры гугла, и они не станут им делиться, сам понимаешь.
    Написано
  • Скрипт на Python работает медленно, как ускорить?

    Vindicar
    @Vindicar
    FermerBilli, скорость будет только во вред, так как гугл очень быстро начнёт показывать капчу твоему горе-парсеру.
    Написано
  • Скрипт на Python работает медленно, как ускорить?

    Vindicar
    @Vindicar
    1. Оформи код по правилам сайта. Кнопка </> в помощь.
    2. Расставь отладочные print(), определи, какая часть кода тормозит.
    Написано
  • Как генерировать файлы и записывать в них информацию в цикле?

    Vindicar
    @Vindicar
    Дополню - name, age и result лучше явно передавать в save_result() вместе со всем остальным.
    Написано
  • Как отправить сообщение в указанное время с помощью isoweekday из библиотеки datetime?

    Vindicar
    @Vindicar
    Igor Ger, я имел ввиду что-то в духе:
    import asyncio
    
    from aiogram import Bot, Dispatcher, html
    from aiogram.client.default import DefaultBotProperties
    from aiogram.enums import ParseMode
    from aiogram.types import Message
    import aioschedule
    
    TOKEN = "..."
    dp = Dispatcher()
    
    async def run_scheduler():  # крутит цикл планировщика
        while True:
            await asyncio.sleep(1)
            await aioschedule.run_pending()
    
    async def job(bot, chat_id):  # выполняется планировщиком - не обработчик команд!
        await bot.send_message(chat_id, 'Пинг!')
    
    @dp.message_handler(text='Попингуй')
    async def (message: Message) -> None:  # обработчик команды - только планирует выполнение
        aioschedule.every(5).seconds.do(job, bot=bot, chat_id=message.chat.id)  # указываем функцию и аргументы
        await bot.send_message(message.chat.id, 'Ну ты сам попросил...')
    
    async def main() -> None:  # тело программы
        bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
        schedule_task = asyncio.create_task(run_scheduler())  # запускаем планировщик фоном
        try:
            await dp.start_polling(bot)  # крутим бота
        finally:  # бот докрутился до завершения
            schedule_task.cancel()  # обрываем выполнение планировщика
            try:
                await schedule_task  # даём ему корректно завершиться
            except asyncio.CancelledError:
                pass  # отменённая корутина выкинут CancelledError, это нормально
    
    if __name__ == "__main__":
        asyncio.run(main())
    Написано
  • Как отправить сообщение в указанное время с помощью isoweekday из библиотеки datetime?

    Vindicar
    @Vindicar
    Igor Ger, ты что-то невнятное пишешь. Почему ты явно запускаешь функцию, которая описана как message_handler()? Это почти всегда плохая идея. Что ты пытаешься сделать-то?

    Кроме того, ты как-то внезапно от асинхронного кода в вопросе перешёл к синхронному коду тут.
    Написано
  • Как отправить сообщение в указанное время с помощью isoweekday из библиотеки datetime?

    Vindicar
    @Vindicar
    Igor Ger, разница в том, что тут у тебя будет несколько долгоживущих циклов и самодельные условия.
    Там - будет готовое апи, которым можно пользоваться, и всего один долгоиграющий цикл.
    Правда, когда появятся вопросы отмены напоминаний и персистентности (чтобы напоминашки переживали перезапуск бота), то ещё вопрос, что окажется удобнее.
    Я просто советую попробовать и сравнить.
    Написано
  • Как пофиксить ошибку с установкой библиотек через Pip?

    Vindicar
    @Vindicar
    Проверь, у тебя в системе библиотека OpenSSL установлена?
    Написано
  • Как создать бота, который будет брать ссылку из команды и писать ее в нужный мне канал с заготовленным сообщением?

    Vindicar
    @Vindicar
    Показывай код попыток (свой, не chatgptшный).
    Или обращайся на фриланс, там дадут готовый.
    Написано
  • Какой модуль выбрать для проекта Python?

    Vindicar
    @Vindicar
    Алан Гибизов, проект, может, и учебный, но он должен быть хоть в принципе реализуем... тут, имхо, и этого нет.
    Или я не понял, что требуется и о каких ошибках речь.
    Написано
  • Почему не работают POST-запросы в Python?

    Vindicar
    @Vindicar
    А тебе не приходило в голову, что сайт требует подтверждения по e-mail, который ты указал?
    Или что сайт детектит твоего бота как бота и молча игнорит твои запросы?
    Написано
  • Как сделать, чтобы мой дискорд бот мог общаться с пользователями?

    Vindicar
    @Vindicar
    Alexsey566, ну вот ты и ответил на свой вопрос. Молодец. =)
    Написано
  • Какой модуль выбрать для проекта Python?

    Vindicar
    @Vindicar
    Alenwar, видишь, какая проблема - один и тот же код ошибки может провоцироваться разными первоначальными причинами. Утрируя, "не найден файл DLL-библиотеки" и "пользователь ввёл кривое имя файла и не смог его открыть" - это "файл не найден".

    И потом, коды ошибки, которые ты упомянул - это коды, возвращаемые для каждой операции с WinAPI. Как ты их увидишь? А даже если увидишь, любая программа выполняет эти операции тысячами, и далеко не всегда их сбой является признаком ошибки в системе.

    Вот почему нужно твёрдо знать, что любой "универсальный починятор" - в лучшем случае заточен на 2-3 типовых сценария, в худшем случае - просто троян.
    Написано
  • Какой модуль выбрать для проекта Python?

    Vindicar
    @Vindicar
    > любые ошибки
    Так не бывает.
    Написано
  • Как сделать, чтобы мой дискорд бот мог общаться с пользователями?

    Vindicar
    @Vindicar
    Alexsey566, окей, тогда следующий наводящий вопрос. Как бот поймёт, что обращаются к нему?
    Написано
  • Как сделать, чтобы мой дискорд бот мог общаться с пользователями?

    Vindicar
    @Vindicar
    Alexsey566, откуда мне знать? Ты же не объяснил, что за необходимость такая.
    Написано
  • Как настроить сортировку в программе на Python?

    Vindicar
    @Vindicar
    Олег, боюсь, ты не на тот ресурс пришёл. Если тебе готовое решение "под ключ", то обращайся на фриланс. А здесь помогают тем, кто учится сам.
    Написано
  • Как настроить сортировку в программе на Python?

    Vindicar
    @Vindicar
    1. Оформляй код, он нечитаем. Правила сайта это тоже требуют. Кнопка </> в помощь. А поскольку кода много, прячь его под спойлер.
    2. Чем понятнее вопрос - тем больше шансов получить ответ. Что значит "отсортировать по порядку"? По какому порядку? По имени? Ну так есть ещё такая штука как естественная сортировка (это когда файл 10.txt идёт после 9.txt), её в общем случае нетривиально сделать. А обычно строки сортируются лексикографически, и в этом порядке 10.txt идёт до 9.txt, потому что 1 < 9. Тебе второй вариант подойдёт, или обязательно первый? Или, может, у тебя имена файлов следуют заранее известному шаблону? Это бы упростило дело.
    Так что чётче формулируй решаемую тобой задачу.
    "Файлы в папке лежат в одном порядке" - как ты его определил? В Проводнике посмотрел? Так он сам файлы сортирует, так что порядок там не имеет отношения к порядку файлов в файловой системе.
    3. Приводи только минимально относящийся к вопросу код. Например, всё, что касается работы с ткинтер - к проблеме сортировки списка файлов не относится. Сократи код до минимального примера, воспроизводящего проблему. Это принесёт ещё один бонус - разобьёшь задачу на меньшие подзадачи, и разделишь эти подзадачи по разным частям кода. Например:
    1. Получить список файлов в каталоге
    2. Отсортировать список файлов
    3. Показать список файлов

    4. На вопрос "я тут у ChatGPT код спросил, почините, а?" обычно следует ответ "Ну вот у ГоПоТы и спрашивай, как чинить". Причина простая - ГПТ часто генерит такую фигню, что проще выкинуть и переписать, чем разобраться и поправить. Начинающим я бы советовал ГПТ не пользоваться, он плохому научит.
    Написано
  • Как сделать, чтобы мой дискорд бот мог общаться с пользователями?

    Vindicar
    @Vindicar
    Alexsey566, ну для этого нужно сформулировать, что значит "по необходимости".
    К слову, в разработке часто добрая половина задачи - точно, полно и непротиворечиво сформулировать требуемое поведение.
    Написано