• Как возвратить данные парсера в телеграм-бот?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Нужно отправлять данные в виде нормальной строки, либо JSON, если нужен список.

    Для строки, например, можно сделать так:
    def parser():
        url = 'https://stopgame.ru/news'
        HOST = 'https://stopgame.ru'
    
        page = requests.get(url)
    
        soup = BeautifulSoup(page.text, 'lxml')
        TITLE = soup.title.string
        print(TITLE)
    
        ss = soup.find_all('div', class_='item article-summary article-summary-card')
    
        news = []
        for s in ss:
            news.append({'title': s.find('div', class_='caption caption-bold').get_text(strip=True),
            'link': HOST + str(s.find('a').get('href'))})
    
        print(f'Загружено {len(news)} статей с новостями в файл')
        
        pretty_news = ''
        for content in news:
            pretty_news += '{}\n{}\n\n'.format(contnet['title'], contnet['link'])
        return pretty_news
    Ответ написан
    1 комментарий
  • Повтор функции input раз?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    num_from = int(input('от: '))
    num_to = int(input('до: '))
    count = int(input('кол-во: '))
    
    result = random.choices(range(num_from, num_to), k=count)
    Ответ написан
    4 комментария
  • Как укоротить код?

    @dmshar
    Не знаю, что вы имеете ввиду, потому что что такое "если цикл запускать просто с функцией,а не через if" , что такое "выполняется неправильно" и что такое "в if работает(?) любое значение" - понять очень сложно, но вот так работает - по моему разумению - правильно.

    repeatWord = ('д','y')
    while True:
        print('Сгенерировать новое число? (да или нет)')
        if input().lower().startswith(repeatWord):
            pass
        else:
            break


    Работает в цикле до тех пор, пока не наберете что-либо, отличное от 'д' или 'y'.
    Ответ написан
    1 комментарий