Можно ли с помощью selenium(python) реализовать такие решения? И насколько они удачны?
Есть сайт-магазин - на нем есть товары, при скроллинге вниз они подгружаются и появляются новые - из каждого из них нужно собрать определенную информацию(если я правильно понимаю как это осуществляется: открывается товар в новой вкладке - оттуда берется информация - и закрывается вкладка)
Получится ли реализовать такие решения:
1)Чтобы спускался вниз для появления следующих товаров, потом бы переходил на каждый появившийся товар и собирал бы информацию, и так по новой пока не спустится в самый низ(т.е. до конца)?
2) Чтобы спускался в самый низ пока не загрузятся все товары и собирал бы ссылки на каждый из них и потом по очереди переходил бы на каждый и собирал бы информацию?
3) Либо можно реализовать какое-то более удачное с точки зрения скорости и нагрузки на железо решение?
Да, с помощью Selenium в Python можно реализовать автоматизацию взаимодействия с сайтом-магазином, включая скроллинг, открытие товаров в новых вкладках и сбор информации с каждого товара.
Для реализации такого решения можно использовать методы WebDriver, такие как execute_script() и find_elements_by_xpath(). При каждом скроллинге можно собирать ссылки на новые товары и открывать их в новой вкладке с помощью метода driver.execute_script("window.open('"+url+"', '_blank')"). Затем можно переключаться на открытую вкладку с помощью метода driver.switch_to.window(driver.window_handles[-1]), собирать информацию и закрывать вкладку с помощью метода driver.close(), затем переключаться на первоначальную вкладку с помощью метода driver.switch_to.window(driver.window_handles[0]). Этот процесс можно повторять до тех пор, пока не будет достигнут конец страницы.
Для реализации такого решения можно использовать методы WebDriver, такие как execute_script() и find_elements_by_xpath(). Сначала нужно прокрутить страницу вниз до самого низа с помощью метода driver.execute_script("window.scrollTo(0, document.body.scrollHeight);"). Затем можно собирать ссылки на все товары на странице с помощью метода driver.find_elements_by_xpath(). После этого можно переходить на каждый товар по очереди, собирать информацию и переходить обратно на страницу со списком товаров.
Более удачное решение зависит от конкретного случая и может включать в себя использование различных методов Selenium, таких как WebDriverWait(), ActionChains() и execute_async_script(), а также оптимизацию кода и использование многопоточности для ускорения работы скрипта. Важно учитывать, что использование Selenium может быть достаточно ресурсоемким, поэтому стоит обращать внимание на оптимизацию скрипта и устанавливать разумные задержки между действиями.
Но как сказкали выше, парсить с помощью Selenium, не самое лучшее решение
JoshGeorge, на сайте при погинации fetch запросы летят из javascript, надо XHR изучать. В браузере кликни правой кнопкой мыши и выбери "Исследовать" или "Просмотреть код", после появится окно справа или снизу там будет вкладка "Сеть" или "Network" и после ещё вкладка "XHR" вот в ней отображаются в реалтайм все запросы которые из фронта в бек летят, крутиш сайт до появления новых данных увидишь появится запрос который за это отвечает, изучаешь его и отправляешь также запрос например через requests библиотеку и это уже будет значительно быстрее и менее нагружено работать чем селениум, если сайт по версии HTTP/2 работает то лучше использовать httpx либу и в асинхронной парадигме, разница по скоростям с силениумом будет космической