#coding=utf-8 __author__ = 'wb' from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time import pytesseract from PIL import Image driver = webdriver.Firefox() driver.get("https://www.guahao.com/user/login?target=%2F") driver.maximize_window() driver.find_element_by_id("loginId").send_keys("****") # 登录名称 driver.find_element_by_id("password").send_keys("****") # 登录密码 # 校验验证码 driver.maximize_window() #将浏览器最大化 driver.save_screenshot('d://aa.png') #截取当前网页,该网页有我们需要的验证码 imgelement = driver.find_element_by_xpath('//img[@src="/validcode/genp_w_picpath/1"]') #imgelement = driver.find_element_by_xpath('/html/body/div/div/div/div[2]/div[2]/div/div/div/from/ul/li[3]/a/src') #定位验证码 location = imgelement.location #获取验证码x,y轴坐标 size=imgelement.size #获取验证码的长宽 rangle=(int(location['x']),int(location['y']),int(location['x']+size['width']),int(location['y']+size['height'])) #写成我们需要截取的位置坐标 i=Image.open("d://aa.png") #打开截图 frame4=i.crop(rangle) #使用Image的crop函数,从截图中再次截取我们需要的区域 frame4.save('d://frame4.jpg') qq=Image.open('d://frame4.jpg') text = pytesseract.p_w_picpath_to_string(qq).strip() #使用p_w_picpath_to_string识别验证码 time.sleep(3) print text driver.find_element_by_id('validCode').send_keys(text) time.sleep(3) # 点击登录 driver.find_element_by_id("J_LoginSubmit").click() # driver.quit()
先是条环境,从网上找资料。最终终于可以登录,但是验证码辨认不是很高,会有登录失败率。
转载于:https://blog.51cto.com/xueba/1934694