Не могу прокрутить вниз в YouTube (мой код может запустить какой-то веб-сайт, но не с Youtube) с помощью Selenium - PullRequest
0 голосов
/ 12 марта 2019

Мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# execute url
url = "https://www.youtube.com/user/xuanvinh1612/community"
driver_path = ('F:/chromedriver.exe')
browser = webdriver.Chrome(executable_path=driver_path)
browser.get(url)

# Auto scroll and auto click with text:'Read more'
read_mores2 = browser.find_elements_by_link_text('Read more')
for read_mores2 in read_mores2:
    browser.execute_script("arguments[0].scrollIntoView();", read_mores2)
    browser.execute_script("$(arguments[0]).click();", read_mores2)
    # Scroll down stop when all post was showed
    read_mores2 = browser.find_elements_by_link_text('Read more')

С тем же кодом мой код может работать на каком-то сайте (2-3 на другом сайте). Но когда я снова использую код для автоматической прокрутки вниз и автоматического нажатия на Youtube / сообщество, это не работает. Я не знаю, как это не работает. Мне нужна помощь, пожалуйста.

1 Ответ

0 голосов
/ 12 марта 2019

Попробуйте этот код: сначала загрузятся все страницы, затем нажмите на все Подробнее ...

import time
from selenium import webdriver
# execute url
url = "https://www.youtube.com/user/xuanvinh1612/community"
browser = webdriver.Chrome()
browser.get(url)

# Auto scroll and auto click with text:'Read more'
previous_count = 0
page_sections = browser.find_elements_by_css_selector('.style-scope.ytd-item-section-renderer')
current_count = len(page_sections)
print("Scrolling to enable all the pages")
while previous_count != current_count:
    try:
        previous_count = current_count
        browser.execute_script("arguments[0].scrollIntoView();", page_sections[-1])
        print("Number of total Elements found: {}".format(len(page_sections)))
    finally:
        # As the page load the newer elements, you need to implement logic here to wait until the loading spinner at the
        # button becomes invisible (not attached to the DOM)
        time.sleep(2)  # WorkAround as you need to implement the above logic here
        page_sections = browser.find_elements_by_css_selector('.style-scope.ytd-item-section-renderer')
        current_count = len(page_sections)

print("Clicking on all Read More")
for read_more in browser.find_elements_by_css_selector('.more-button'):
    browser.execute_script("arguments[0].scrollIntoView();", read_more)
    browser.execute_script("arguments[0].click();", read_more)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...