Как собрать данные о нескольких продуктах из динамически генерируемых URL-адресов с помощью Selenium?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как собрать данные о нескольких продуктах из динамически генерируемых URL-адресов с помощью Selenium?

Сообщение Anonymous »

По следующей ссылке: https://www.ifood.com.br/delivery/brasi ... 66f111-576 6-409e-97aa-6034868aa230?corredor=4e10f079-d107-437b-b278-e71a964b444b&originArea=aisleMenu, Я хочу собрать информацию о ценах и описаниях товаров. Однако цена, отображаемая в этом разделе, часто является ценой не за килограмм, а за меньшие количества, например 500 граммов. Чтобы узнать цену за килограмм, мне нужно нажать на конкретный предмет, который я хочу забрать. Например, нажав на ссылку https://www.ifood.com.br/delivery/brasi ... -6034868aa 230?corredor=4e10f079-d107-437b-b278-e71a964b444b&originArea=aisleMenu&item=c2fd050a-5f7d-42be-8cfb-e5eea854599d, где идентификатор продукта добавляется в конец ссылки раздела с помощью &item=c2fd050a-5f7d-42be-8cfb-e5eea854599d, что позволяет мне получить доступ к конкретной странице продукта и получить цену за килограмм (Preço do quilo) и описание. Чего я пытаюсь сделать, но не могу достичь, так это предоставить коду Selenium доступ к каждой ссылке на продукт на основном URL-адресе, ввести URL-адрес конкретного продукта и собрать информацию о цене за килограмм и описании, когда эта информация доступна.< /p>
Я хочу, чтобы код имел доступ к основному URL-адресу: https://www.ifood.com.br/delivery/brasi ... 66f111-576 6-409e-97aa-6034868aa230?corredor=4e10f079-d107-437b-b278-e71a964b444b&originArea=aisleMenu. Затем код должен перемещаться по каждой отдельной ссылке на продукт, найденной по этому URL-адресу. С помощью цикла код должен собирать информацию о цене за килограмм и описании каждого товара.
Ниже представлена ​​часть кода, которая собирает информацию об описании и цене на " основной" URL.
list = [
"https://www.ifood.com.br/delivery/brasi ... =aisleMenu"]

for i in lista:
try:
driver.get(i)
time.sleep(1)

scrolls = 5
while scrolls > 0:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
time.sleep(1)
scrolls -= 1

elem = driver.find_element(By.TAG_NAME, "body")
elem.send_keys(Keys.END)
elem.send_keys(Keys.END)
elem.send_keys(Keys.END)
time.sleep(1)

items = driver.find_elements(By.CLASS_NAME, 'product-card-content')
for item in items:
descricao = item.find_element(By.CLASS_NAME, 'product-card__description').get_property("innerHTML")
try:
preco = item.find_element(By.CLASS_NAME, 'product-card__price').get_property("textContent")
except:
preco = ''
item_data = {'descricao': descricao, 'preco': preco}

print(json.dumps(item_data, ensure_ascii=False))

except (TimeoutException, WebDriverException) as e:
print(f"Erro ao acessar o link {i}: {str(e)}")
except Exception as e:
print(f"Erro inesperado ao processar o link {i}: {str(e)}")

driver.quit()


Подробнее здесь: https://stackoverflow.com/questions/788 ... ls-using-s
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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