Рекурсивно вызывающая функция при определенном условии - PullRequest
0 голосов
/ 21 января 2020

У меня есть функция, которая извлекает контент со случайного веб-сайта каждый раз, используя библиотеку beautifulsoup, где я каждый раз получаю случайный контент. Я успешно могу извлечь содержимое ..... но скажем (если выводится текст 'ab c'). Я хочу снова и снова вызывать функцию, пока не получу другой вывод. Я добавил условие if, чтобы сделать это, но почему-то оно не работает, как я думал:

class MyClass:

    def get_comment(self):
        source = requests.get('https://www.example.com/random').text
        soup = BeautifulSoup(source, 'lxml')
        comment = soup.find('div', class_='commentMessage').span.text
        if comment == "abc":
            logging.warning('Executing again....')
            self.get_comment() #Problem here....Not executing again
        return comment

mine = MyClass()
mine.get_comment() # I get 'abc' output

1 Ответ

1 голос
/ 21 января 2020

Когда вы вызываете свою функцию рекурсивно, вы ничего не делаете с выводом:

class MyClass:

    def get_comment(self):
        source = requests.get('https://www.example.com/random').text
        soup = BeautifulSoup(source, 'lxml')
        comment = soup.find('div', class_='commentMessage').span.text
        if comment == "abc":
            logging.warning('Executing again....')
            return self.get_comment() #Call the method again, AND return result from that call
        else:
            return comment #return unchanged

mine = MyClass()
mine.get_comment()

Я думаю, это должно быть больше похоже на то, что вы ищете.

...