Ответы пользователя по тегу Python
  • Как спарсить данные с TrandingView?

    @rPman
    Данные там лежат в огромном json прямо встроенном в саму страницу, которая грузится без каких либо особенностей, тупо wget-ом, очень странное решение но
    <script type="application/prs.init-data+json">{"FYBZHq":{"context":{"request_context":{"user":{"is_authenticated":true,"is_...}}</script>
    пример FYBZHq►data►news►data►items►0►
    id	:	prime:0273264f867b8:0
    title	:	Результаты торгов акциями в секторе основных торгов Московской биржи
    storyPath	:	/news/prime:0273264f867b8:0/
    sourceLogoId	:	prime
    published	:	1701792002
    source	:	ПРАЙМ
    urgency	:	2
    permission	:	headline
    provider	:	prime
    Ответ написан
    Комментировать
  • Почему вылетает программа при записи в .txt файл?

    @rPman
    у тебя prices определена как global, добавь global prices в этот метод либо определи prices как мембер класса и убери эту global.
    Ответ написан
    Комментировать
  • Как обрабоать данные полученные с POST?

    @rPman
    {identification: "4242", password: "424234", remember: false}
    это json строка, ее разбором на python можно заниматься с помощью штатной библиотеки json
    data = json.loads('{identification: "4242", password: "424234", remember: false}')
    print(data['remember'])
    Ответ написан
  • Каким образом можно обучить ИИ распознавать лицо python?

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

    @rPman
    return random_name + '.pdf'  # Добавляем расширение .pdf к случайному имени


    upd.
    gigachat от сбера (бесплатно без санкций)
    как изменить этот код чтобы сгенерировать случайное имя файла с .pdf в конце

    import random
    import os
     
    def generate_random_name():
        characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        random_name = ''
        for i in range(10):
            random_name += random.choice(characters)
        return random_name
     
    def rename_file(file_path):
        new_name = generate_random_name()
        directory = os.path.dirname(file_path)
        new_file_path = os.path.join(directory, new_name)
        os.rename(file_path, new_file_path)
        return new_file_path
     
    file_path = 'C:\\2\out.pdf'
    new_file_path = rename_file(file_path)
    print(f'Файл переименован в {new_file_path}')

    -------------- ответ --------------------------------
    Чтобы изменить код так, чтобы он генерировал случайное имя файла с расширением .pdf в конце, можно использовать следующий код:

    import random
    import os
    
    def generate_random_name():
        characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        random_name = ''
        for i in range(10):
            random_name += random.choice(characters)
        return random_name + '.pdf'
    
    def rename_file(file_path):
        new_name = generate_random_name()
        directory = os.path.dirname(file_path)
        new_file_path = os.path.join(directory, new_name)
        os.rename(file_path, new_file_path)
        return new_file_path
    
    file_path = 'C:\\2\\out.pdf'
    new_file_path = rename_file(file_path)
    print(f'Файл переименован в {new_file_path}')


    В этом коде мы добавили метод generate_random_name(), который возвращает случайное имя файла с расширением .pdf. Затем мы изменили функцию rename_file, чтобы она использовала новое имя файла, сгенерированное методом generate_random_name(), в качестве последнего имени файла.
    Ответ написан
    3 комментария
  • Как ввести длинный поток байтов?

    @rPman
    Ввести как константу в исходниках? самое простое base64 encoding
    base64.b64decode('твоя base64 строка')

    а сам исходный файл кодируй либо какой либо утилитой либо онлайн либо напиши программу на python в 3 строчки
    -------------

    есть утилита xxd, она преобразует файл в набор 16-ричных цифр, добавить к ним \x и заключить в ковычки b'\x...' получишь свою строку

    -----------

    chatgpt сгенерировал такую программу, чтобы сделать это самому да еще и печатные символы в код не преобразовывать, выглядит вроде верным кодом
    import string
    
    # Откройте файл в режиме чтения байтов и прочитайте его содержимое
    with open('your_file', 'rb') as f:
        byte_content = f.read()
    
    # Преобразуйте байты в строку байтов
    byte_string = ''
    for b in byte_content:
        if chr(b) in string.printable and b not in (0x0a, 0x0d):  # Проверка, является ли символ печатным и не является ли он символом новой строки или возврата каретки
            byte_string += chr(b)
        else:
            byte_string += '\\x{:02x}'.format(b)
    
    # Выведите строку байтов
    print(byte_string)
    Ответ написан
    Комментировать
  • Обход блокировки API openai?

    @rPman
    Мой ответ не про openai в частности а в целом про прокси.

    Арендуешь vps с поддержкой ssh (т.е. любой) и ничего не настраивая на нем кроме может пользователя (команда useradd ... и пароль passwd) и опционально настраиваешь беспарольную авторизацию ssh на своем локальном компьютере (смотри как настраивать твой любимый клиент ssh) делов на 1 минуту. А дальше, в своем клиенте добавляешь настройку тунеля -Dпорт (это ключ ssh, например в putty он называется Dynamic) и после подключения к своей vps-ке (в этом окне ssh ничего больше не надо делать, пусть висит) у тебя локально на комьютере будет поднят socks прокси сервер, который прописываешь в браузере или где тебе надо. Например -D1080 даст socks5 прокси по адресу localhost:1080

    Теперь про аренду vps, идешь на поисковик дешевых vps-ок lowendstock и выбираешь себе от 2 бакса в год (но это совсем ущербные), там же почти все принимают оплату биткоинами. У меня годами работают vps-ки с ценой от 1$ в месяц до 3$ (последняя для моих скриптов с 1gb ram и 20gb ssd, не самая шустрая но свои $ отрабатывает на ура)

    p.s. если vps-ка на основе kvm (точнее можно и на любом но нужен модуль tun) то есть шанс настроить ssh сервер на работу vpn-ом буквально

    upd. к сожалению в россии провайдеры стали потихоньку ломать ssh протокол
    , и он рандомно может быть очень медленным, больших скоростей не жди, у меня на ростелекоме с 5мбайт/с может упасть до 100кбайт/сек и держаться так часами (притом что канал у ростелекома широкий, я с того же huggingface на 25мбайт/cек качал гигабайтами нейронки)
    Ответ написан
    3 комментария
  • Как Python и Selenium заставить найти текст?

    @rPman
    Тестируй css селекторы в отладочной консоли браузера, используя, либо штатный querySelector('xxx'), либо, при наличии, jquery $('xxx'). Используй встроенный генератор css селектора (правая кнопка на элементе, копировать,...)
    Ответ написан
    1 комментарий
  • Почему в этом коде при проверке слов с помощью оператора in в скобках он работает как надо, а без скобок по другому?

    @rPman
    Это не должно работать, or это логический оператор, т.е. ты буквально пытаешься сравнить строковые константы как логическое выражение которое true/false, а затем пытаешься результат сравнения найти в массиве с помощью in, который введённая строка (массив символов), хз что он там у тебя находит, но явно не то что ожидаешь.

    Уличная скобки, ты меняешь приоритет операций, и сначала у тебя отрабатывает in, с ближайшим словом, а затем or строки истинные, должно быть всегда true
    Ответ написан
    Комментировать
  • Подойдет ли для парсинга сайта Амазон библиотека Selenium Stealth на Python?

    @rPman
    Главный вопрос, почему именно amazon? почему именно selenium-stealth? Вы пробовали другие инструменты и они не сработали?

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

    p.s. я не нашел продукта под названием Amazon Selenium Stealth, но нашел статьи по использованию amazon lambda и библиотеки selenium-stealth
    Ответ написан
  • Как установить Python 3.9.6 на Ubuntu 20.04 LTS?

    @rPman
    Можно воспользоваться ppa репозитарием 'от сообщества'

    А вообще странно что ты не попытался даже погуглить, первая же ссылка тупо на твой вопрос.

    p.s. очень смешно, уже есть готовые бесплатные ИИ ассистенты, способные не просто болтать но и искать в интернете (майкрософтовский bing chat), я удивлен что количество простых вопросов на площадке не уменьшилось, неужели не знаете? как можно пропустить персонального ассистента, который благодаря интернету умнее (ладно эрудированней) любого обывателя и не только, он за тебя не только ищет но и читает найденные статьи и дает из них нужную выжимку.
    Ответ написан
  • Как переубедить нейросеть (чтобы данные из промпта считались более важными)?

    @rPman
    С LLM у тебя только два варианта - добавлять информацию в запрос, а в случае с противоречиями, тюнить и усложнять подводку, типа если ты хочешь чтобы везде где сетка использует цвет красный она говорила
    бибип:
    Дальше в ответе вместо цвета - 'красный' ты должен писать бибип, с учетом правил русского языка, рода и склонения. Назови три цвета у светофора

    Три цвета у светофора: бибип, желтый и зеленый.



    Так вот тюнинг, очень противоричивая технология, в каких то случаях она значительно улучшает результат, есть даже ускоренный тюнинг, затрагивающий очень небольшой процент весов или даже только веса векторов запроса но не самой сетки (есть открытый проект peft с поддержкой практически всех доступных моделей), к сожалению openai не дает красивого доступа к этому, хотя для младших моделей типа gpt35turbo или davinci у нее такой механизм есть.

    Этот механизм имеет недостатки, из-за проблемы 'катастрофического забывания', чем больше данных ты пытаешься добавить в модель через дообучение, тем больше она забывает ранее выученных (с этим борются подмешиванием данных из изначальной обучающей выборки но это не так просто)
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    @rPman
    Если узкое место - разбор огромного json, то тебе нужен потоковый парсер, их огромное количество, гугл для питона выдает к пример ijson.

    Если этого будет мало, попробуй переписать это место на c/c++, там еще быстрее парсеры, например simdjson обещает гигабайты в секунду (и это реально так)

    Эти парсеры пробегают линейно по токенам, а ты в процессе принимаешь решение нужно ли пропустить данный токен (или целый подраздел) или обрабатывать далее, благодаря такому подходу в оперативной памяти не сохраняется ничего из входного json а потоковый подход позволяет даже распаралелить обработку (в отдельном потоке/процессе ты анализируешь json а в другом пишешь в базу данных)
    Ответ написан
    Комментировать
  • Как узнать время выполнения работы функций и детализацию?

    @rPman
    Это называется профилирование, гуглить python profilers
    например cprofile
    https://habr.com/ru/companies/vk/articles/202832/
    Ответ написан
    Комментировать
  • Как сделать так, чтобы не выходил из программы, пока не нажму Ente?

    @rPman
    Значит на машине не установлен python

    Окружений python несколько, как минимум свое идёт вместе с ide. Если ставить python с официального сайта, то окружение будет единое для всех приложений, рекомендую начать именно с этого варианта.
    Ответ написан
  • Получение ошибки при запросе на биржу?

    @rPman
    нужны куки со страницы referer, и с высокой вероятностью они будут постоянно меняться (т.е. недостаточно один раз их скопировать и использовать), как минимум это один из хороших способов защититься от автоматизаций и парсинга, заставляя 'атакующих' использовать полноценный браузер (а там можно таймингами отрабатывать)
    Ответ написан
    Комментировать
  • Как правильно импортировать локальную библиотеку python?

    @rPman
    Правильно - ты должен после каждого изменения кода библиотеки, устанавливать ее (как описанно в github).
    По простому - тебе хватит импорта библиотеки с указанием пути, не представляю, зачем тебе постоянно менять этот путь, это подходит на то время, пока ты периодически вносишь изменения в код библиотеки, тесты и отладку.
    Ответ написан
  • Как сделать чтоб при запуске приложения .exe сразу открывался локальный сервер в браузере?

    @rPman
    Вопрос на самом деле не простой, речь не о программировании а об идеологии.
    У тебя два варианта - твое приложение реализует собственно браузер (примерно так работает electron приложения) либо какими то способами скрывается основное (в твоем случае консольное) окно приложения.

    Идеологически скрывать приложение некрасиво, как минимум пользователь должен иметь возможность его остановить, закрыв связанное с ним окно (в реальности закрытие окна не является закрытием приложения но это ожидаемое поведение для пользователя), когда то было нормой, скрываемые окна для приложения 'сворачивали в системный трей', т.е. окно скрывается но в системный трей (у часов) добавляется иконка с меню приложения.

    Теперь по факту. Скрыть свою системную консоль приложение не сможет, как в windows так и в linux (при наличии прав конечно сможет, но речь о типовых ситуациях) но можно запустить приложение изначально указав его сокрытым. Для каждой ОС свои способы.

    На python можно запустить любое приложение сокрытым, т.е. твое приложение запускает само себя с определенным ключом (и первый экземпляр завершает работу), чтобы исключить зацикливание, следующим образом:
    https://stackoverflow.com/questions/2319838/open-a...

    upd. погугли pythonw.exe и .pyw extention, такой тип приложений будет запускаться без консоли но как я понял это очень устаревший подход и может не поддерживаться.
    Ответ написан
    Комментировать
  • Надо ли что-то еще делать для избежания SQL инъекций?

    @rPman
    Конкретно для защиты от одной из многих атак - sql injection, да
    А еще нужно проверять на ошибки, проверять на валидность самих значений соответственно бизнес модели и состояний (например пользователь редактирует запись, указывая идентификатор связанной таблицы, так вот нужно проверить имеет ли он права в принципе указывать полученный id)
    Ответ написан
    4 комментария
  • Как запустить свой профиль firefox selenium?

    @rPman
    options.add_argument('-P имя_профиля');
    так же попробуй --profile путь_до_профиля

    профиль создать нужно заранее
    Ответ написан
    1 комментарий