如何使用 Python 和 Selenium 通过向 Firefox 发送击键来保存 Web 图像
how to save web image by sending keystrokes to Firefox using Python and Selenium
我想使用 Selenium 与 Firefox 的 Python 绑定来保存网络图像。此图片需要身份验证才能查看,我不知道如何获取 urllib 来处理此身份验证:
IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
我正在 Firefox 中加载图像(已在浏览器中进行身份验证),然后尝试使用 Selenium 的 Python 绑定 使用浏览器 保存它。
这是代码的简化版本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
driver = webdriver.Firefox()
driver.get(URL1)
感觉像是自然进展的情况如下:
img = driver.find_element_by_xpath('/html/body/div[1]/img[1]')
src = img.get_attribute('src')
urllib.urlretrieve(src, "ACR01.png")
但是,由于提到的身份验证原因,这不起作用。我现在想尝试的是有效地发送 Ctrl
s
,然后是 Enter
到 Firefox,以便使用浏览器(已验证)保存图像。
我该怎么做?
编辑:下面描述了一种更精细的浏览器配置文件规范尝试,但是,浏览器继续显示脚本无法处理的对话框:
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
Firefox_profile = webdriver.FirefoxProfile()
Firefox_profile.set_preference("browser.download.folderList", 2)
Firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)
Firefox_profile.set_preference("browser.download.dir", os.getcwd())
Firefox_profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "image/jpeg")
driver = webdriver.Firefox(firefox_profile = Firefox_profile)
driver.get(URL1)
ActionChains(driver).send_keys(Keys.CONTROL, "s").perform()
让我们应用以下技巧:获取所需图像的src
属性值,通过get()
在浏览器中打开它并使用save_screenshot()
保存它:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
driver = webdriver.Firefox()
driver.get(URL1)
img = driver.find_element_by_xpath('/html/body/div[1]/img[1]')
src = img.get_attribute('src')
driver.get(src)
driver.save_screenshot("download.jpeg")
我想使用 Selenium 与 Firefox 的 Python 绑定来保存网络图像。此图片需要身份验证才能查看,我不知道如何获取 urllib 来处理此身份验证:
IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
我正在 Firefox 中加载图像(已在浏览器中进行身份验证),然后尝试使用 Selenium 的 Python 绑定 使用浏览器 保存它。
这是代码的简化版本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
driver = webdriver.Firefox()
driver.get(URL1)
感觉像是自然进展的情况如下:
img = driver.find_element_by_xpath('/html/body/div[1]/img[1]')
src = img.get_attribute('src')
urllib.urlretrieve(src, "ACR01.png")
但是,由于提到的身份验证原因,这不起作用。我现在想尝试的是有效地发送 Ctrl
s
,然后是 Enter
到 Firefox,以便使用浏览器(已验证)保存图像。
我该怎么做?
编辑:下面描述了一种更精细的浏览器配置文件规范尝试,但是,浏览器继续显示脚本无法处理的对话框:
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
Firefox_profile = webdriver.FirefoxProfile()
Firefox_profile.set_preference("browser.download.folderList", 2)
Firefox_profile.set_preference("browser.download.manager.showWhenStarting", False)
Firefox_profile.set_preference("browser.download.dir", os.getcwd())
Firefox_profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "image/jpeg")
driver = webdriver.Firefox(firefox_profile = Firefox_profile)
driver.get(URL1)
ActionChains(driver).send_keys(Keys.CONTROL, "s").perform()
让我们应用以下技巧:获取所需图像的src
属性值,通过get()
在浏览器中打开它并使用save_screenshot()
保存它:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
URL1 = "https://special.site.ch/webpic/ACR01.jpg"
driver = webdriver.Firefox()
driver.get(URL1)
img = driver.find_element_by_xpath('/html/body/div[1]/img[1]')
src = img.get_attribute('src')
driver.get(src)
driver.save_screenshot("download.jpeg")