У меня проблема в том, что я не получил все твиты после прокрутки и нажатия следующей кнопки. Я получаю только несколько последних твитов. Единственная идея, которая у меня есть, состоит в том, чтобы интегрировать очистку в то время как l oop. Но я хочу найти способ, где я получаю все твиты после прокрутки и нажатия вниз. Может быть, у кого-то есть идея или она может сказать ее, если это невозможно.
Более того, я относительно новичок в python и особенно в селене. Так что, если есть какие-либо другие советы к моему коду, пожалуйста, не стесняйтесь
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
import random
import time
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
driver = webdriver.Chrome(r"path",chrome_options=chrome_options)
url = 'https://twitter.com/RegSprecher/status/1251100551183507456'
driver.get(url)
wait = WebDriverWait(driver, 20)
#Click on the Cookie banner, since it covers the further
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Schließen')]"))).click()
while True:
#Click on the next button if possible
try:
element = driver.find_element(By.XPATH, "//span[contains(text(),'Weitere Antworten anzeigen')]")
if element.is_displayed():
actions = ActionChains(driver)
actions.move_to_element(element).perform()
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Weitere Antworten anzeigen')]"))).click()
#if not scrolle down
except NoSuchElementException :
last_height = driver.execute_script("return document.body.scrollHeight")
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(random.randint(1,3))
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
# If heights are the same it will exit the function
break
last_height = new_height
#get tweets
tweet = driver.find_elements_by_css_selector("div[data-testid='tweet']")
print(tweet)
[<selenium.webdriver.remote.webelement.WebElement (session="07b337bdb89396d57c4b05c7454ec764", element="8e694557-5d4a-4af1-8b33-9c91679b31eb")>,
<selenium.webdriver.remote.webelement.WebElement (session="07b337bdb89396d57c4b05c7454ec764", element="f52a06da-09c5-47f0-bf93-1fb5409472f3")>,
<selenium.webdriver.remote.webelement.WebElement (session="07b337bdb89396d57c4b05c7454ec764", element="f773fd2b-537c-425c-9662-29439f0de9a6")>,
<selenium.webdriver.remote.webelement.WebElement (session="07b337bdb89396d57c4b05c7454ec764", element="3b278f06-46bc-4231-ad87-059f94ebbce9")>,
<selenium.webdriver.remote.webelement.WebElement (session="07b337bdb89396d57c4b05c7454ec764", element="1c1e408b-e5c8-45f7-bf31-64d778a70e0a")>]