Вы правы, что сайт, на который вы нацеливаетесь, использует JavaScript для отображения данных, которые вы пытаетесь получить.Проблема в том, что requests
не оценивает javascript.
Вы также правы в том, что Selenium WebDriver часто используется в этих ситуациях, поскольку он управляет реальным, полноценным экземпляром браузера.Но это не единственный вариант, так как requests-html
имеет поддержку javascript и, возможно, менее громоздок для простого просмотра.
В качестве примера, чтобы начать, ниже приведены заголовок и ценаиз первых пяти элементов на сайте, к которому вы обращаетесь:
from requests_html import HTMLSession
from bs4 import BeautifulSoup
session = HTMLSession()
r = session.get("https://reverb.com/p/electro-harmonix-oceans-11-reverb-2018")
r.html.render(sleep=5)
soup = BeautifulSoup(r.html.raw_html, "html.parser")
for item in soup.select(".product-row-card", limit=5):
title = item.select_one(".product-row-card__title__text").text.strip()
price = item.select_one(".product-row-card__price__base").text.strip()
print(f"{title}: {price}")
Результат:
Electro-Harmonix EHX Oceans 11 Eleven Reverb Hall Spring Guitar Effects Pedal: $119.98
Electro-Harmonix Oceans 11 Reverb - Used: $119.99
Electro-Harmonix Oceans 11 Multifunction Digital Reverb Effects Pedal: $122
Pre-Owned Electro-Harmonix Oceans 11 Reverb Multi Effects Pedal Used: $142.27
Electro-Harmonix Oceans 11 Reverb Matte Black: $110