Используя Python с Selenium и BeautifulSoup4, как я могу получить данные после того, как Javascript загрузил все элементPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Используя Python с Selenium и BeautifulSoup4, как я могу получить данные после того, как Javascript загрузил все элемент

Сообщение Anonymous »

Я пытаюсь извлечь данные с веб-сайта-песочницы, просто чтобы попрактиковаться и начать использовать Python для очистки веб-данных.
Мне удалось извлечь много данных, используя основы, однако я нашел элемент, который загружается динамически после начальной загрузки страницы.
Мой вопрос: как извлечь эти данные после загрузки элемента?
Вот мой код, который я сейчас использую:< /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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»