Я уверен, что ответ прост, но меня действительно бросает через oop. Я пытаюсь очистить раздел ответов Twitter.com, поскольку он бесконечно прокручивается. Используя Selenium и bs4, я могу очистить только несколько имен пользователей. Количество зависит от запуска, но обычно варьируется от 7 до 10 имен пользователей. Похоже, что он только очищает имя пользователя в самом низу страницы, и я хотел бы очистить их все, и мне это сложно. Любая помощь приветствуется!
import requests, time
from bs4 import BeautifulSoup
from selenium import webdriver
from lxml import html
url = ("https://twitter.com/realDonaldTrump/status/1265827032707072000")
driver = webdriver.Chrome('INSERTDRIVERHERE')
def scroll_to_bottom(driver):
old_position = 0
new_position = None
while new_position != old_position:
# Get old scroll position
old_position = driver.execute_script(
("return (window.pageYOffset !== undefined) ?"
" window.pageYOffset : (document.documentElement ||"
" document.body.parentNode || document.body);"))
# Sleep and Scroll
time.sleep(1)
driver.execute_script((
"var scrollingElement = (document.scrollingElement ||"
" document.body);scrollingElement.scrollTop ="
" scrollingElement.scrollHeight;"))
# Get new position
new_position = driver.execute_script(
("return (window.pageYOffset !== undefined) ?"
" window.pageYOffset : (document.documentElement ||"
" document.body.parentNode || document.body);"))
driver.get(url)
scroll_to_bottom(driver)
html = driver.page_source
soup = BeautifulSoup(html, features='lxml')
usernameSoup = soup.find_all("div", class_="css-901oao css-bfa6kz r-111h2gw r-18u37iz r-1qd0xha r-a023e6 r-16dba41 r-ad9z0x r-bcqeeo r-qvutc0")
# Quits browser
driver.quit()
# Grabs text of css code
list_of_usernames = [x.text for x in usernameSoup]
# Lists all the usernames in a string
text = ', '.join(list_of_usernames)
# Prints list to see how many usernames are being scraped for comparison
print(text)
print(len(list_of_usernames))
Я пробовал вставить больше операторов сна, чтобы убедиться, что вся страница загружается до того, как html будет проанализирован, но мне все равно не повезло.