硒,下载动态验证码,Python

时间:2018-08-31 06:01:53

标签: python python-3.x selenium

由于需要检查100多个注册号,因此我决定创建一个脚本来为我完成此任务,因为我需要经常对其进行测试。

想法是我必须访问以下网站: https://www.anaf.ro/inactivi/index.jsp

在第一个字段中输入注册号的地方,第二个字段中必须输入验证码。验证码很容易解决,并且很简单,因为已经有适用于python的库,但是我面临的问题是图像的“ src”属性进入了动态网址。

有什么方法可以保存在Webdriver上使用.get时显示的图像?

这就是我要解决的问题的方式:

from captcha_solver import CaptchaSolver
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("https://www.anaf.ro/inactivi/index.jsp")

time.sleep(5)

elem = driver.find_element_by_name('inputCui')  # Find the first input box
elem.send_keys('17741254')   # Input the desired code

或者,也许,如果有人对如何解决该问题有其他想法,我愿意提出建议。

1 个答案:

答案 0 :(得分:0)

好吧,所以我设法解决了这个问题,我只需要截取页面的屏幕截图,然后裁剪它,然后解码验证码即可。这是那些有兴趣的代码:

def get_captcha(driver, element, path):
    location = element.location
    size = element.size
    driver.save_screenshot(path)
    image = Image.open(path)
    left = location['x']
    top = location['y']
    right = location['x'] + size['width']
    bottom = location['y'] + size['height']
    image = image.crop((left, top, right, bottom))
    image.save(path, 'png')

img = driver.find_element_by_xpath("//img[1]")
get_captcha(driver, img, "captcha.png")