使用Selenium Python下载嵌入式SVG?

2024-09-28 19:30:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Python Selenium scraper,它应该从一个网页下载所有图像。该网页要求您将鼠标悬停在元素上,以便显示我自己已经解决的图像。有(APNG-动画png)png图像,刮板可以很好地下载,因为它拉取了src标记。当scraper访问封装在SVG标记中的animatessvg,但没有源链接时,就会出现致命问题。在我看来,图像直接嵌入到代码本身中。我试着寻找一个解决方案,但到目前为止,我没有发现任何东西可以帮助我实现自动化。每个人都只提到svg grabber Chrome插件,它似乎是一个解决方案,而不是一个解决方案,而且也不能自动化

这是我遇到问题的页面:

https://svgmedia.io/

(您需要将鼠标悬停在“直接限制”列中的某个项目上,之前的项目使用标准APNG)

如何将此图像下载为SVG

这是我处理图像下载的代码的一部分:

hover = ActionChains(driver).move_to_element(item).perform()
        img = wait.until(ec.presence_of_element_located((By.XPATH, "//img[@id='img']"))).get_attribute('src')
        print(img)
        img_request = requests.get(img)
        if img_request.ok:
            with open(item.text + ".apng.png", 'wb') as imgfile:
                print(f"Downloading {item.text}")
                imgfile.write(img_request.content)
        else:
            print("Request failed.")
            input("Press any key to exit")
            exit()

下载嵌入式SVG有类似的方法吗


Tags: 项目代码标记svg图像src网页img
1条回答
网友
1楼 · 发布于 2024-09-28 19:30:13
import urllib.request
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
driver = webdriver.Chrome()
driver.get(
    'https://stickers.advaith.io/')


element = WebDriverWait(driver, 10).until(EC.presence_of_element_located
                                          ((By.XPATH, '//*[contains(text(),"Act Natural")]')))

element.click()

src = WebDriverWait(driver, 10).until(EC.presence_of_element_located
                                          ((By.CSS_SELECTOR, 'img#img'))).get_attribute("src")

print(src)
opener = urllib.request.URLopener()
opener.addheader(
    'User-Agent', "'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2)     AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'")
filename, headers = opener.retrieve(src, 'newimage.svg')

使用urllib.request.URLopener()

相关问题 更多 >