Мне удалось извлечь много данных, используя основы, однако я нашел элемент, который загружается динамически после начальной загрузки страницы.
Мой вопрос: как извлечь эти данные после загрузки элемента?
Вот мой код, который я сейчас использую:< /p>
Код: Выделить всё
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
options = webdriver.FirefoxOptions()
driver = webdriver.Firefox(options=options)
driver.get('https://sandbox.oxylabs.io/products')
results = []
other_results = []
status = []
content = driver.page_source
soup = BeautifulSoup(content, 'html.parser')
for element in soup.find_all(attrs={'class': 'product-card'}):
name = element.find('h4')
if name not in results:
results.append(name.text)
for b in soup.find_all(attrs={'class': 'product-card'}):
# Note the use of 'attrs' to again select an element with the specified class.
name2 = b.find(attrs={'class': 'price-wrapper'})
# stock = b.find(attrs={'class': 'price-wrapper'}).find_next_sibling('p')
# status.append(stock.text)
other_results.append(name2.text)
print(b)
df = pd.DataFrame({'Names': results, 'Prices': other_results, 'Stock': status})
df.to_csv('products.csv', index=False, encoding='utf-8')
Пример того, как он выглядит при загрузке:
Нет в наличии
Однако он не отображается в print(b) ни для одного из элементов.
Я пробовал использовать CSS-селектор и .find(), однако есть две проблемы с товары, которых нет на складе, имеют класс «нет на складе», а товары на складе имеют класс «в наличии».
Я попробовал использовать оператор if, чтобы вручную установить переменную, если она есть на складе. class, затем установите для него значение «В наличии», иначе «Нет в наличии», однако из-за того, что элемент не существует, его всегда нет на складе.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -javascrip