从分裂中保存内联图像
saving inline image from splinter
我有一个页面,一旦某些 javascript 是 运行 就会生成图像。我可以使用 splinter
到达我拥有图像但无法保存它的位置。
我使用的代码非常简单:
browser = Browser('firefox')
browser.visit(png_url)
browser.driver.save_screenshot(str(step+1) + '.png')
但是屏幕截图是空的...
页面基本是:
<body style="margin: 0px;">
<img style="-webkit-user-select: none" src="http://localhost:8000/x">
</body>
我可以右键单击并保存图像,但不确定如何使用 splinter
自动保存图像。
此外,图像是内联 png,当我检查来源时它显示为:
data:image/png;base64,iVBORw0KGgoAAAANSUhE
等...
如何自动保存这张图片?我正在尝试生成 link 的列表,然后遍历它们并保存每个 link.
的图像
添加延迟允许图像通过 explicit wait:
出现
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser.driver, 10)
wait.until(EC.visibility_of_element_located((By.TAG_NAME, "img")))
browser.driver.save_screenshot(str(step+1) + '.png')
或者,time.sleep()
(不推荐):
import time
time.sleep(5)
browser.driver.save_screenshot(str(step+1) + '.png')
或者,read that base64 image data, decode and save it(未测试):
image_data = browser.driver.find_element_by_tag_name("img").get_attribute("src")
image_data = image_data[22:] # getting rid of data:image/png;base64,
fh = open(str(step+1) + '.png', "wb")
fh.write(image_data.decode('base64'))
fh.close()
我有一个页面,一旦某些 javascript 是 运行 就会生成图像。我可以使用 splinter
到达我拥有图像但无法保存它的位置。
我使用的代码非常简单:
browser = Browser('firefox')
browser.visit(png_url)
browser.driver.save_screenshot(str(step+1) + '.png')
但是屏幕截图是空的...
页面基本是:
<body style="margin: 0px;">
<img style="-webkit-user-select: none" src="http://localhost:8000/x">
</body>
我可以右键单击并保存图像,但不确定如何使用 splinter
自动保存图像。
此外,图像是内联 png,当我检查来源时它显示为:
data:image/png;base64,iVBORw0KGgoAAAANSUhE
等...
如何自动保存这张图片?我正在尝试生成 link 的列表,然后遍历它们并保存每个 link.
的图像添加延迟允许图像通过 explicit wait:
出现from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser.driver, 10)
wait.until(EC.visibility_of_element_located((By.TAG_NAME, "img")))
browser.driver.save_screenshot(str(step+1) + '.png')
或者,time.sleep()
(不推荐):
import time
time.sleep(5)
browser.driver.save_screenshot(str(step+1) + '.png')
或者,read that base64 image data, decode and save it(未测试):
image_data = browser.driver.find_element_by_tag_name("img").get_attribute("src")
image_data = image_data[22:] # getting rid of data:image/png;base64,
fh = open(str(step+1) + '.png', "wb")
fh.write(image_data.decode('base64'))
fh.close()