python - 图像的 Selenium get_attribute('src') 返回 Base64 而不是 url
问题描述
我正在使用 selenium 从谷歌图像中自动下载几张图像,因为我之前在互联网上找到的所有其他解决方案都太慢或不起作用,但现在我需要提取图像的来源,但是当我尝试使用 element.get_attribute('src') 它返回图像的base64,甚至当我在chrome devtools上搜索xpath时,标签的src属性实际上是一个url
代码试验:
for i in range(n):
element = self.wait.until(
EC.presence_of_element_located((By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img')))
src = element.get_attribute('src')
print(element)
self.download_file(src,keyword)
编辑:
我实际上尝试了你们中的一些人所说的,而不是下载图像,而是将 base 64 转换为图像并保存,这比使用请求和 URL 保存要快得多,但我猜这更多是谷歌脚本的问题与我的代码相比,有时我的代码会损坏,因为 src 实际上返回了一个 URL,最后,我必须创建两个不同的函数,一个是 src 返回一个 url,另一个是返回 base64
解决方案
要打印src属性的值,您需要诱导WebDriverWait并且visibility_of_element_located()
您可以使用以下任一Locator Strategies:
使用
CSS_SELECTOR
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[alt='Letter A AC - Decortiles'][src]"))).get_attribute("src"))
使用
XPATH
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[@alt='Letter A AC - Decortiles' and @src]"))).get_attribute("src"))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- sass - Sass:根据主题设置全局变量
- hadoop - 创建 dataproc 集群时报告的 DataNode 数量不足
- c - 将 C 文件导出到新文件时删除 #if 0 和 #endif 之间的代码
- python - C9 IDE - 未找到 Conda 命令
- android - Android中的数组索引越界异常
- file - 我应该将存储在 Windows 文件共享中的文件复制到数据湖中吗?
- python - 只在 Pandas Dataframe 中保留字符串?
- java - BitmapDrawable does not respect scaleType on view
- c++ - 创建一个跨平台的 C++ 触摸管理器。在 c++ 中传递 Objective-c 对象涉及的代码
- java - Java DecimalFormat 向下舍入