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

Мои самые большие достижения:
- Работал скриптером в небольшой команде инди - разработчиков.
- Был ведущим разработчиком OCR приложения для десктопных систем.
Контакты
Местоположение
Россия, Тюменская обл. и Ханты-Мансийский АО, Нижневартовск

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (6)
  • Как выглядит ID сообщения в телеграмме?

    botermain
    @botermain
    Python - Разработчик
    ID выглядит правильно, вопрос в том, правильный ли вы подставляете, давайте лучше получим ID отправленного нами сообщения и изменим его по нему, а не тыкая пальцем в небо. Расскажу на примере Telethon(Самая простая библиотека по моему мнению):

    Во первых, отправим сообщение и запишем его в переменную
    message = client.send_message(chat_id, text)

    После чего мы можем достать из переменной ID отправленного нами сообщения:
    message = client.send_message(chat_id, text)
    print("ID сообщения: ", message.id)


    И вот только теперь отредактируем его с помощью ID, который получили, вот пример рабочего кода:
    message = client.send_message(chat_id, text)
    client.edit_message(chat_id,message.id,text)


    Надеюсь, что объяснил понятно
    Ответ написан
    3 комментария
  • Как сделать ВК бота который читает данные с google sheet?

    botermain
    @botermain
    Python - Разработчик
    Да, это возможно!

    Работал много раз с Google Sheets, так что подскажу небольшой, но очень хороший гайд, тут рассказано всё, от того как создать ключ, до того, как получать и загружать данные в таблицу

    По поводу бота для ВК, можно использовать модуль vk_api, также отличный гайд для него
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при появлении нового файла в папке, он отправлялся в telegram bot?

    botermain
    @botermain
    Python - Разработчик
    Я далеко не программист

    Поручи эту работу тому, кто в этом разбирается, ибо то, что ты хочешь сделать не для обычного пользователя пк

    Ну, а если серьёзно, тебе нужно как минимум подключать многопоточность, если требуется постоянная работа в чате после команды, после чего в бесконечном цикле запрашиваешь имена файлов и если появляется новое, берешь и подставляешь его:
    import telebot
    import threading
    import os
        
    bot = telebot.TeleBot('...................')
    
    def voiceloop(bot,chatId):
        files = set(os.listdir())
        while True:
            new = set(os.listdir())
            if new != files:
                try:
                    send = list(new.difference(files))[0]
                    bot.send_voice(chatId, open(send, 'rb'))
                    files = new
                except:
                    pass
    
    
    @bot.message_handler(commands=['start'])
    def start(massage):
        chatId = massage.chat.id
        text = massage.text.lower
        t = threading.Thread(target=voiceloop, args = (bot,chatId))
        t.start()
    
    
    bot.polling()

    Код не тестил, но должно работать.
    Ответ написан
    1 комментарий
  • Как сохранить скачаный архив?

    botermain
    @botermain
    Python - Разработчик
    Максимально легкий код, не думаю, что можно проще
    send = requests.get('path.zip')
    with open("path.zip","wb") as f:
        f.write(send.content)
    Ответ написан
    2 комментария
  • Не могу понять почему Selenium не может найти class?

    botermain
    @botermain
    Python - Разработчик
    Скажу сразу, мне не очень нравится код, поэтому вот несколько рекомендаций.

    Наученный опытом, скажу, что использовать XPATH намного целесообразнее, но только не абсолютный указатель пути, а индексы, вот ссылка на документацию

    Предлагаю организовать структуру поиска, немного иначе, вместо того, чтобы икать класс, в котором содержатся плитки, сразу искать их, это сэкономит время:
    tabs = browser.find_elements(By.XPATH,'//div[@class="col-12 col-md-6 col-lg-4 col-xl-3"]') #Ищем все товарные плитки


    Теперь, когда у нас есть список со всеми плитками, пройдемся по нему и подостаем все, что нам нужно:
    for i in tabs:
        image = i.find_element(By.XPATH,'//img') #Достаем из плитки изображение
        name = i.find_element(By.XPATH,'//a[@class="card-title item_title sp-line-2"]') #Достаем из плитки название
        price = i.find_element(By.XPATH,'//div[@class="price"]') #Достаем из плитки цену
        print('Изображение: ',image.get_attribute('src'),' Название: ',name.text,' Цена: ',price.text) #Выводим всю информацию

    Идея с отправкой кнопок для прокрутки, тоже не очень, лучше вместо этого запусти следующий скрипт, он автоматически прокрутит вниз на всю длину страницы:
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")


    Вот полный скрипт для парсинга, который получился у меня, работает как часы, поэтому прошу к ознакомлению:
    from webdriver_manager.chrome import ChromeDriverManager #Для пакетов Хромиума
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    import time
    
    
    service_package = Service(ChromeDriverManager(log_level=0).install()) #Устанавливаю пакеты Хромиума
    
    options = webdriver.ChromeOptions()
    #options.add_argument('--headless')
    driver = webdriver.Chrome(service=service_package,options=options)
    
    driver.maximize_window() #Разворачиваем страницу, даже если в headless режиме, потому что не всё грузится
    
    driver.get("https://obnovi-oboi.ru/goods?category=oboi")
    
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Скроллим до конца
    time.sleep(2)
    
    driver.find_element(By.XPATH,'/html/body/main/section/div/div[2]/button').click() # Кликаем кнопку
    time.sleep(5)
    
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Скроллим до конца
    time.sleep(2)
    
    tabs = driver.find_elements(By.XPATH,'//div[@class="col-12 col-md-6 col-lg-4 col-xl-3"]') #Ищем все товарные плитки
    for i in tabs:
        image = i.find_element(By.XPATH,'//img') #Достаем из плитки изображение
        name = i.find_element(By.XPATH,'//a[@class="card-title item_title sp-line-2"]') #Достаем из плитки название
        price = i.find_element(By.XPATH,'//div[@class="price"]') #Достаем из плитки цену
        print('Изображение: ',image.get_attribute('src'),' Название: ',name.text,' Цена: ',price.text) #Выводим всю информацию


    Если будут ещё вопросы по поводу Selenium, обращайся !
    Ответ написан
    3 комментария