Запишите изображения в файл 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 Я тестирую с.

🤔 А знаете ли вы, что...
Python поддерживает многозадачность и многопоточность.


73
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()