我使用Chrome作为浏览器,我想用Selenium将验证码保存到我的电脑上。每当我从URL请求时,我都会得到一个随机图像,但是我需要在浏览器上显示的那个图像,所以我无法再次请求它。(获取图像的src然后再发出请求,如使用requests
将获得不同的图片。)
以这个网站为例(我想要获取验证码的网站有白名单,所以我不能使用它): https://unsplash.it/200/300/?random
from selenium import webdriver
if __name__ == '__main__':
driver = webdriver.Chrome(r'F:\Dev\ChromeDriver\chromedriver.exe')
driver.get('https://unsplash.it/200/300/?random')
img = driver.find_element_by_tag_name('img')
现在我可以在浏览器中看到图片了,那么我该怎么做才能将同一张图片作为文件保存到我的电脑上呢?
P.S。
img.screenshot('image.png')
使用验证码在网站上无效。
保存页面的整个屏幕截图有效,但请让我知道更好的解决方案。
答案 0 :(得分:1)
这将为您提供元素的屏幕截图
driver.find_element_by_css_selector('element selector here').screenshot_as_png
答案 1 :(得分:0)
我不确定Chrome,但我能够在Firefox浏览器上做同样的事情。 代码如下:
from selenium import webdriver
import requests
driver=webdriver.Firefox()
driver.get("http/https://your website")
img=driver.find_element_by_xpath("xpath leading to your element")#locating element
src=img.get_attribute('src')#fetch the location of image
img=requests.get(src)#fetch image
with open('image.jpg','wb') as writer:#open for writing in binary mode
writer.write(img.content)#write the image