是否可以通过 Selenium (Python) 从网站下载图像,以防从服务器动态生成?

问题描述 投票:0回答:1

我在一个网站上的 Web Inspector 工具图像中发现了这一点(域名仅作为示例) https://somesite.com/asd/photo.pl?num=10,它不是网站的一部分,但可能是从服务器动态生成的。
我想问是否可以通过python中的selenium下载它。
我尝试过这个,但它不起作用。我认为由于像我所说的那样的服务器站点,这是不可能的。

from selenium import webdriver

import urllib.request
import shutil
import time
import requests

driver = webdriver.Firefox()

driver.get("https://somesite.com/")

img = driver.find_element(By.XPATH, '/html/body/div[2]/div/div[1]/a/img')
img_url = img.get_attribute('src')
response = requests.get(img_url)

with open("saved_image.jpg", "wb") as file:
    file.write(response.content)
python html selenium-webdriver image-processing dynamically-generated
1个回答
0
投票
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 time

# Setup WebDriver
driver = webdriver.Firefox()
driver.get("https://somesite.com/")

# Wait for the image to be loaded
wait = WebDriverWait(driver, 10)
img = wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div/div[1]/a/img')))

# Get image URL
img_url = img.get_attribute('src')

# Download the image using Selenium
driver.get(img_url)
time.sleep(2)  # Wait for the image to load

# Save the image
with open("saved_image.jpg", "wb") as file:
    file.write(driver.find_element(By.TAG_NAME, "img").screenshot_as_png)

# Clean up
driver.quit()

此脚本使用 Selenium 导航到图像 URL,然后使用 Selenium 的屏幕截图功能保存图像。它确保图像在保存之前加载,并且不会将 Selenium 与请求混合,如果图像需要有效的会话或特定的 cookie 才能访问,这会很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.