• Как спарсить все артикулы со страницы с бесконечным скроллом на Beautifulsoup + Selenium?

    @Alexa2007
    Кодировку так и не победил...сам мучайся )))
    Этот код работает в сто раз быстрее
    Результат сохраняется в json

    from bs4 import BeautifulSoup
    import requests
    import json
    
    URL='https://upakovka-spb.ru/category/2-odnorazovaya-posuda/11-kontyeynyery/?page='
    
    ruslt={}
    
    def get_info(url):
        page = requests.get(url)
        if page.status_code == 200:
            src=[]
            i=0
            soup = BeautifulSoup(page.text,'html.parser')
            ul = soup.find_all('a',class_ = 's-image')
            for _ in ul:
                href ='https://upakovka-spb.ru/' + _.get('href')
                src = _.find('img').get('src')
                title = _.get('title')
                if src.split('.')[-1] == 'svg':
                    i+=1
                    ruslt[i]=[title,href]
    
        with open('result.json','w') as json_file:
            json.dump(ruslt,json_file, ensure_ascii=True, indent = 4)
    
    
    for _ in range(1,5):
        get_info(URL+str(_))
  • Как починить остановку Telegram бота?

    @Alexa2007
    Что это? - inputBot Если он тут ожидает...
  • Как починить остановку Telegram бота?

    @Alexa2007
    А где бот? Как он сюда попадает? Вот это есть?
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    И от себя советую переделать код почти полностью иначе это будет: if x+x-y*y/2>y*y-x*y/2
    Ты сам заблудишься в этой бредятине или уже заблудился...
    Класическое столкновение проверяется координатами x,y нескольких объектов. За тебя всё уже сделали одной строкой if pygame.sprite.collide_rect(tree1, tree2)
    Вот это зло: if x >= 647 and W == 700 or, которое взорвёт мозг
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    Ну во первых: ПРОЧИТАЙ ВОПРОС, который ты задал.
    Как в pygame сделать реакцию на столкновение?

    А теперь ты пишешь:

    Да нет, когда дерева столкнули и написано "BOOOOOOOM!" я это могу сделать запросто

    А во вторых:
    чтоб мяч не отскочил а остановился и когда игрок пошел в противоположную сторону то мяч не прилип к дереву а пошел

    Ты вообще о чем?!?!? В вопросе это не указано, код не запускается, Всё то что ты пишешь ТОЛЬКО в твоей голове! Я вижу :"кув дощ и кучу переменных"
    На заданный вопрос ответ поступил в полном объёме.
  • Как распаковать скачанный архив в приложение python + pyqt5 GUI?

    @Alexa2007
    Перенес в метод run. Строка 31
    import os
    import shutil
    import subprocess
    import sys
    import zipfile
    from multiprocessing import process
    
    from PyQt5.QtWidgets import QApplication, QProgressBar, QWidget, QLineEdit, QPushButton, \
        QVBoxLayout, QHBoxLayout
    from PyQt5.QtCore import QThread, pyqtSignal
    import urllib.request
    
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    
    
    class Downloader(QThread):
        # Сигнал о количестве данных (PyQt5)
        preprogress = pyqtSignal(float)
        progress = pyqtSignal(float)
    
        # fileUrl - url - файла, включая сам файл
        # filename - имя файла
        def __init__(self, fileUrl, fileName):
            QThread.__init__(self)
            # Флаг инициализации
            self._init = False
            self.fileUrl = fileUrl
            self.fileName = fileName
    
        def run(self):
            # тест на локальных данных, но работать должно и с сетью
            r = urllib.request.urlretrieve(self.fileUrl, self.fileName, self._progress)
            if r:
                zf = zipfile.ZipFile(self.fileName, 'r')
                for _ in zf.namelist():
                    zf.extractall('c://test//'+self.fileName.split('.')[0])
    
    
        def _progress(self, block_num, block_size, total_size):
            if not self._init:
                self.preprogress.emit(total_size)
                self._init = True
    
            # Расчет текущего количества данных
            downloaded = block_num * block_size
            if downloaded < total_size:
                # Отправляем промежуток
                self.progress.emit(downloaded)
            else:
                # Чтобы было 100%
                self.progress.emit(total_size)
            
    
    
    class MainWindow(QWidget):
        def __init__(self):
            super().__init__()
            self.setGeometry(100, 100, 600, 180)
            self.setWindowTitle('GTO Games')
            self.downloader = None
            self.fileUrl = QLineEdit('https://www.7-zip.org/a/7za920.zip')
            self.buttonga = QPushButton('Играть', self)
            self.loadButton = QPushButton('Скачать', self)
            self.buttonga.move(10, 10)
            self.loadButton.move(10, 50)
    
            self.unzipButton = QPushButton('Распаковать', self)
            self.unzipButton.move(120, 10)
            #self.unzipButton.clicked.connect(self.unzipp)
    
            self.loadButton.clicked.connect(self._loadFile)
            hbox = QHBoxLayout()
            hbox.addWidget(self.loadButton)
            vbox = QVBoxLayout(self)
            vbox.addLayout(hbox)
            self.bar = QProgressBar()
            vbox.addWidget(self.bar)
    
        def initializeUI(self):
            self.buttonga.clicked.connect(self.exerun)
            # self.unzipButton = QPushButton('Распаковать', self)
            # self.unzipButton.move(120, 10)
            # self.unzipButton.clicked.connect(self.unzipp)
            self.show()
    
        def _loadFile(self):
            ar = self.fileUrl.text().split('/')
            if len(ar) == 0:
                return
            fileName = f'_{ar[len(ar) - 1]}'
            print(fileName)
    
            self._download = Downloader(self.fileUrl.text(), fileName)
            # Устанавливаем максимальный размер данных
            self._download.preprogress.connect(lambda x: self.bar.setMaximum(round(x)))
            # Промежуточный/скачанный размер
            self._download.progress.connect(lambda d: self.bar.setValue(round(d)))
            self._download.start()
            print("D_Start")
            self.loadButton.hide()
    
        
    
        def exerun(self):
            # z = zipfile.ZipFile('Mods.zip', 'w')  # Создание нового архива
            # for root, dirs, files in os.walk('./'):  # Список всех файлов и папок в директории folder
            #     for file in files:
            #         z.write(os.path.join(root, file))  # Создание относительных путей и запись файлов в архив
            #
            # z.close()
            args = [r".\Vintagestory.exe", "--connect=xx.xxx.xxx.xx", "--pw=9029"]
            subprocess.call(args)
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
  • Как спарсить все артикулы со страницы с бесконечным скроллом на Beautifulsoup + Selenium?

    @Alexa2007
    Хм....Странно...Но всё работает:)))
    Дело в том, что в images вы помещаете несколько объектов, а text просите не понятно у кого. А просить надо у каждого по очереди. И кстати текста там НЕТУ. Вот то что находит селениум:
    <img src="/wa-data/public/shop/themes/hypermarketcustom/img/svg/empty_photo.svg" alt="БЕЗ КРЫШКИ Контейнер   Д-Полимер 0,500 л PP 186*132 прозр. (100) (500) ДП" itemprop="image">

    И просить можно только то что есть. А текста нету... Но думаю это то что вам надо:
    from selenium import webdriver
    from time import sleep
    
    driver = webdriver.Chrome(
    'C://Users/roman/AppData/Local/Programs/Python/Python37-32/Lib/site-packages/selenium/common/chromedriver_win32 (1)/chromedriver.exe')
    driver.get('https://upakovka-spb.ru/category/2-odnorazovaya-posuda/11-kontyeynyery/')
    
    images = driver.find_elements_by_css_selector('img[src*=svg]')
    for _ in images:
        print(_.get_attribute("alt"))
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    Вот небольшой образец того о чём я говорю:
    Файл bots.py Класс который отображает объект. При чем любой. Просто в словарь накидываешь пути к файлам, а вызываешь по номеру в списке
    import pygame
    class any_bot():
        def __init__(self, sceen, image_type=0, x=600, y=150):
            self.sceen = sceen
            self.x = x
            self.y = y
            self.image_type = image_type
            self._image(image_type)
    
        @property
        def rect(self):
            return self._image(self.image_type)
    
              
        def _image(self, image_type):
            images  = ['C:\\дерево pygame.bmp','C:\\дерево pygame 1.bmp']
            img = pygame.image.load(images[image_type])
            img.set_colorkey((255, 255, 255))
            rect_image = img.get_rect(center=(self.x, self.y))
            self.sceen.blit(img, rect_image)
            return rect_image


    И основной файл..уже гораздо меньше. И не обработан.. Но тоже можно поколдовать.
    import pygame as pg
    import sys
    from bots import *
     
    
     
    clock = pg.time.Clock()
    
    
    def game_process():
        go_right=0# Начало движения первого дерева
        go_letf= 800# Начало движения ворого дерева
        s = pg.display.set_mode((900, 400))
        while 1:
            go_right +=3# движения первого дерева
            go_letf -=3#  движения ворого дерева
            for i in pg.event.get():
                if i.type == pg.QUIT:
                    pg.quit()
                    sys.exit()
            clock.tick(60)
    
            tree1 = any_bot(s,0,go_right,100)#Создание дерева из класса
            tree2 = any_bot(s,1,go_letf,100)#Создание второго дерева тем же методом 
            if pygame.sprite.collide_rect(tree1, tree2):# Если два дерева сталкиваются
                print('BOOOOOOM!!!')#Пишем БУУУУУМ!
            pygame.display.update()
    
    
    game_process()


    Файл с деревом не грузится. Поэтому сам назови их как хочешь или укажи путь к своим файлам
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    К тому же...
    import pygame #Зачем два раза импортировать?
    import pygame as pg
    import sys
    import ctypes
    from random import *
    import time
    import tkinter as tk # в tkinter все по другому а в pygame тоже все по другому....
    from PIL import ImageGrab
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    roma2,
    оно по tkinter а не про pygame.
    в tkinter все по другому а в pygame тоже все по другому....

    Дело не в tkinter или pygame. Дело в том что ООП подразумевает классы методы и т.д. А не просто один цикл с переменными х, у. Это видео не по созданию игры, а о методах написания программ. Так чтоб удобно было развивать этот проект. Ну ударится шарик о дерево. Ну отскочет... и? Через пять минут тебе же станет скучно и захочется чего-то добавить... А перед тобой 200 строк кода и хорошо, что есть хоть пару классов. И это те 40 строк кода которые не придётся переписывать. И то не факт. Если не досмотрел до конца советую всё таки досмотреть. И переписать код пока не поздно. Пка ещё ничего толком не работает.
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    В том то и дело.
    в этой игре продумано с каждой
    переменой а не с разными переменами


    Переведи проект на ооп(Это общая рекомендация). А папку с проектом можешь сюда кинуть. И напиши куда распаковать архив
  • Почему не меняется адрес с прокси?

    @Alexa2007
    Проблема в урле...меня тоже нашло в ростове на дону
    https://yandex.ru/search/?lr=39&text=купить самокат

    А вот так не нашло где я
    https://yandex.ru/search/?text=купить самокат
  • Как в pygame сделать реакцию на столкновение?

    @Alexa2007
    roma2, Как бы по проще сказать.. В коде деревья машины тучи и т.д. Я не могу запустить код, чтоб проверить и что-то изменить или добавить. Создай мини проект в котором будет дерево и шар. А вот тогда и попробуем их потолкать друг на друга. Так чтоб было около 20-ти строчек кода. Вот интересное видео. тыц Оно поможет доделывать игру в комфорте.
  • Как от имени бота телеграм написать в чат?

    @Alexa2007
    Денис Мельников, Это называется масштабируемость и всё зависит от того как реализован ваш бот.. Если это один длинный файл, то это не сложно - это жопа. Вот как можно реализовать неплохо масштабируемые бот, с читаемым кодом. тыц Пример в коментариях