Selenium - почему результаты поиска возвращают мне список тех же элементов из веб-поиска - PullRequest
0 голосов
/ 10 января 2020

Я пробую простую программу на python Селен, используя браузер firefox. Я хочу что-то искать и получить все результаты в списке. Например, найдите текст на YouTube и напечатайте внешние ссылки и метки всех результатов.

Ниже приведен мой код. И результат печатает 1-й элемент X количество раз.

class youtube:
base_url = "https://www.youtube.com/"

search_textbox_xpath = "//input[@id='search']"
search_button_id = "search-icon-legacy"

all_results_xpath = "//ytd-video-renderer[contains(@class,'ytd-item-section-renderer')]"
individual_result_href_xpath = "//a[@id='video-title']"
individual_result_text_xpath = "//a[@id='video-title']/yt-formatted-string[contains(@class,'ytd-video-renderer')]"

def search_youtube(self, search_text):
    try:
        b = Browser()
        handle = b.open_browser(self.base_url)
        time.sleep(8)

        search_textbox = handle.find_element_by_xpath(self.search_textbox_xpath)
        #search_textbox.clear()
        search_textbox.send_keys(search_text)

        handle.find_element_by_id(self.search_button_id).click()
        time.sleep(8)

        all_results = handle.find_elements_by_xpath(self.all_results_xpath)

        for each_result in all_results:
            print (each_result)
            href = each_result.find_element_by_xpath(self.individual_result_href_xpath).get_attribute('href')
            print(href)
            text = each_result.find_element_by_xpath(self.individual_result_text_xpath).text
            print(text)

    finally:
        b.close_browser()


if __name__ == '__main__':
    y = youtube()
    y.search_youtube('upcoming animated movies 2020')

Вывод:

https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие анимационные и семейные фильмы 2020 года (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие Анимация и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие фильмы АНИМАЦИЯ И СЕМЬЯ 2020 (Трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие фильмы АНИМАЦИЯ И СЕМЬЯ 2020 (Трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие Анимация и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучший Предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие фильмы АНИМАЦИЯ И СЕМЕЙСТВО 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие фильмы АНИМАЦИЯ И СЕМЬЯ 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ The Best Предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ лучшие предстоящие анимационные и семейные фильмы 2020 (трейлер) https://www.youtube.com/watch?v=qqSyecJ0zAQ Лучшие грядущие анимационные и семейные фильмы 2020 года (трейлер)

Я вижу, что в 'each_result' указан другой идентификатор элемента. Тогда почему он печатает один и тот же 1-й результат X раз? Я открыл тот же поиск и вижу в источнике все результаты поиска.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...