Соскрести все ответы с комментариев YouTube - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь извлечь все ответы на все комментарии в заказе от Youtube.
Мой может очистить все комментарии, но не может получить ответы под ними.У меня эта ошибка.Я в Linux.

Message: Element <paper-button id="more" class="style-scope ytd-expander"> could not be scrolled into view

Это мой код:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.action_chains import ActionChains

driver=webdriver.Firefox()
driver.get('https://www.youtube.com/watch?v=QOzZDdXetUA')
driver.execute_script('window.scrollTo(1, 500);')

time.sleep(5)
driver.execute_script('window.scrollTo(1, 3000);')

comments=driver.find_elements_by_xpath('//*[@id="content-text"]')
name=driver.find_elements_by_xpath('//*[@id="author-text"]')

while True:
    try:
        loadMoreButton = driver.find_element_by_xpath('//*[@id="more"]')
        time.sleep(2)
        loadMoreButton.click()
        time.sleep(5)
    except Exception as e:
        print(e)
        break

time.sleep(10)

number_of_items=len(name)
for i in range (number_of_items):
    print(name[i].text + " : ")
    print(comments[i].text)
driver.quit()   

1 Ответ

0 голосов
/ 13 декабря 2018

Хорошо, я думаю, вы были довольно закрыты.Я добавил несколько строк к тому, что у вас уже было.Делает ли это то, что вы хотите?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True

driver=webdriver.Firefox(executable_path="C:/Utility/geckodriver.exe", firefox_profile=profile)
driver.get('https://www.youtube.com/watch?v=QOzZDdXetUA')
driver.execute_script('window.scrollTo(1, 500);')

time.sleep(5)
driver.execute_script('window.scrollTo(1, 3000);')

comments=driver.find_elements_by_xpath('//*[@id="content-text"]')
name=driver.find_elements_by_xpath('//*[@id="author-text"]')

while True:
    try:
        loadMoreButton = driver.find_element_by_xpath('//*[@id="more"]')
        time.sleep(2)
        loadMoreButton.click()
        time.sleep(5)
    except Exception as e:
        print(e)
        break

time.sleep(10)

number_of_items=len(name)
for i in range (number_of_items):
    print(name[i].text + " : ")
    print(comments[i].text)
driver.quit()  
...