В личном проекте, над которым я работаю, я нахожусь в ситуации, когда мне нужно почистить названия предметов с динамического сайта c, используя селен.
Для того, чтобы получить все данные, необходимо прокрутить до конца.
Однако становится сложнее, если вы прокрутите вниз, чтобы быстро получить только названия предметов внизу. Не имеет значения, как долго вы ждете, вы все еще получаете предметы в прицеле.
Так что я решил, что смогу медленно прокрутить до дна, но это не похоже на работу.
Вот мой демонстрационный код для иллюстрации проблемы
url='https://shopzetu.com/search?type=product,article,page&q=dress'
driver.get(url)
#driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # this works but you get items at bottom only
#this scrolls slowly to end
driver.execute_script("function pageScroll() {window.scrollBy(0,50);scrolldelay = setTimeout('pageScroll()',1000);}pageScroll()")
time.sleep(2)
products =driver.find_elements_by_class_name("grid-product__content")
for product in products:
name=product.find_element_by_class_name("grid-product__title").text
print(name)
Есть идеи?
Дополнительно (импорт и конфигурация)
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1420,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(chrome_options=chrome_options)