Запишите изображения в файл Excel — Selenium/Pandas/Python

Я хочу скопировать изображение с веб-сайта в файл Excel.

Ниже приведен фрагмент моего кода. Это получит URL-адрес SRC и поместит его в лист Excel. Можно ли превратить это в настоящее изображение?

if len(driver.find_elements(By.CSS_SELECTOR, '#FMP-target'))>0:
    image = driver.find_element(By.CSS_SELECTOR, '#FMP-target').get_attribute('src')
    print(image)
    images.append(image)
else:
    photo = "No photo"
    print(photo)
    images.append(photo)
driver.quit()

df = pd.DataFrame(zip(images,house_name,description_details,house_price,specs,ratings,cancellation_policy,urls),columns=['Photo','Property Name','Description','Price','Specifications','Ratings','Cancellation Policy','Link'])
df.to_excel(r{file},index=False)

Это URL Я тестирую с.

Зачем вам попробовать это с Пандами? Этот модуль предназначен для манипулирования данными, а не изображениями.

moken 12.07.2024 07:02

Есть ли лучший модуль для встраивания изображения в ячейку?

Clay Burnett 12.07.2024 07:18

Получите изображения и используйте Openpyxl add_image.

moken 12.07.2024 07:30
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пример загрузки изображений с сайта и вставки в столбец «Листа» A, используя высоту изображения для расчета привязки ячейки.

from selenium import webdriver
from selenium.webdriver.common.by import By
from PIL import Image as Image
from openpyxl import Workbook
import io
from openpyxl.drawing.image import Image as opImage

url = "https://www.airbnb.com.au/rooms/50961691?adults=9&children=2&pets=1&search_mode=regular_search&check_in=2024-12-22&check_out=2024-12-28&source_impression_id=p3_1720759519_P3FseNFXiyBEU7hU&previous_page_section_name=1000&federated_search_id=7f29c222-115b-444d-bcdd-895c3e3151b4"
sheet_row = 1  # Set the row for the image anchor

driver = webdriver.Chrome()
driver.get(url)
### Get images from Web Site
image_element = driver.find_elements(By.TAG_NAME, "img")

wb = Workbook()
ws = wb.active

### Add each image found to the Sheet
for img in image_element:
    img_png = Image.open(io.BytesIO(img.screenshot_as_png)).convert("RGB")

    ### Format Image for Openpyxl
    img_stream = io.BytesIO()
    img_png.save(img_stream, format='PNG')
    img_openpyxl = opImage(img_stream)
    print(f"Image Height: {img_openpyxl.height}")

    ### Insert image at Sheet anchor cell
    location = f"A{sheet_row}"
    print(f"Sheet Location: {location}")
    ws.add_image(img_openpyxl, location)

    ### Set next row for image based on last image size
    sheet_row += int(img_openpyxl.height / 19) + 2

wb.save("image.xlsx")

driver.quit()

Другие вопросы по теме

Подсчет количества ячеек, заполненных данными на основе указанных дат в будущем
Запись в ячейку файла XLSX с помощью скрипта Sheets
Напишите цикл, который будет проверять все вкладки, количество листов, изменение цвета вкладок на основе значений трех ячеек
Как найти результат в соседней ячейке, если в ней используются буквы, форматирование и цифры?
Копирование ячеек без определенного текста в макросе Excel
Суммируйте все ячейки, для которых соответствующая ячейка не является формулой и не возвращает #ЗНАЧЕНИЕ И дата произошла в прошлом
Сопоставление нескольких числовых строк и проверка соответствующих дат в течение 90 дней
Фильтруйте и сортируйте данные с помощью нескольких критериев столбца и строки и сопоставляйте с ними соответствующие данные с помощью фиксированных и гибких return_arrays
Цикл VBA для извлечения сводки электронных писем за последние 30 дней
Фильтруйте и сортируйте данные с помощью нескольких критериев столбца и строки, а затем сопоставляйте с ними соответствующие данные с помощью нескольких гибких return_arrays