Здравствуйте. Написал вот такой незамысловатый код. На что хватило знаний. Проблема заключается в том, что у меня n-ое кол-во фотографий с товаром. Я хочу с помощью yandex photo находить этот товар с самой низкой ценной на всех площадках. Если в строке "filename" указывать явный путь (вернее название файла .jpg) всё работает как надо за исключением выгрузки фотографии в таблицу excel. А если пустить это через цикл for. то обновляются только filename.(Переменная-массив prices) Цена не обновляется. Я полный новичок в программировании. Прошу сильно не ругаться.
Помогите с обновлением цены. При моих четных попытках это реализовать открывается два окна chrome и всё. И объясните как правильно работать с созданием таблицы excel. Заранее большое спасибо
Python:
import os
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
import openpyxl
from openpyxl.drawing.image import Image
# Set the folder path
folder_path = '/home/wanlix/PycharmProjects/pythonProject/photo'
# Create a new instance of the Chrome driver
driver = webdriver.Chrome()
# Navigate to Yandex.Images
driver.get("https://yandex.ru/images/")
try:
# Create lists to store the data
prices = []
links = []
# Iterate over all files in the folder
for filename in os.listdir(folder_path):
# Upload the photo to Yandex.Images
image_input = WebDriverWait(driver, 10).until(
ec.presence_of_element_located((By.CSS_SELECTOR, "input[type='file']")),
message="Таймаут ожидания поля ввода файла"
)
print("Поле ввода файла найдено")
time.sleep(0.1)
image_input.send_keys(os.path.join(folder_path, filename))
print(f"Файл {filename} отправлен в поле ввода файла")
time.sleep(0.1)
# Wait for the search results
search_results = WebDriverWait(driver, 10).until(
ec.presence_of_all_elements_located((By.ID, "cbir-products-title")),
message="Таймаут ожидания результатов поиска"
)
print("Результаты поиска загружены")
time.sleep(0.1)
# Extract the price text for each file
span_element = WebDriverWait(driver, 10).until(
ec.presence_of_element_located((By.XPATH, "//span[@class='Price-Value']")),
message="Таймаут ожидания цены"
)
price_text = span_element.text
print(price_text) # Output: 1 108 ₽
# Store the data
data = {
"Photo": filename,
"Price": price_text
}
prices.append(data["Price"])
links.append(filename)
# Create an Excel file and add a worksheet
wb = openpyxl.Workbook()
ws = wb.active
# Set the header row
ws['A1'] = "Photo"
ws['B1'] = "Price"
# Iterate over the data and add it to the worksheet
for i, data in enumerate(zip(links, prices)):
# Insert the photo
img_path = os.path.join(folder_path, data[0])
img = Image(img_path)
ws.add_image(img, f'A{i+2}')
# Add the price text
ws[f'B{i+2}'] = data[1]
# Save the Excel file
wb.save("output.xlsx")
except Exception as e:
print(f"Ошибка произошла: {e}")
finally:
# Закрытие браузера
driver.quit()
print("Браузер закрыт")
Помогите с обновлением цены. При моих четных попытках это реализовать открывается два окна chrome и всё. И объясните как правильно работать с созданием таблицы excel. Заранее большое спасибо