国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python+selenium識別驗(yàn)證碼并登錄的示例代碼

2020-02-16 11:16:23
字體:
供稿:網(wǎng)友

由于工作需要,登錄網(wǎng)站需要用到驗(yàn)證碼。最初是研究過驗(yàn)證碼識別的,但是總是不能獲取到我需要的那個(gè)驗(yàn)證碼。直到這周五,才想起這事來,昨天順利的解決了。

下面正題:

python版本:3.4.3

所需要的代碼庫:PIL,selenium,tesseract

先上代碼:

#coding:utf-8import subprocessfrom PIL import Imagefrom PIL import ImageOpsfrom selenium import webdriverimport time,os,sysdef cleanImage(imagePath):  image = Image.open(imagePath)  #打開圖片  image = image.point(lambda x: 0 if x<143 else 255) #處理圖片上的每個(gè)像素點(diǎn),使圖片上每個(gè)點(diǎn)“非黑即白”  borderImage = ImageOps.expand(image,border=20,fill='white')  borderImage.save(imagePath)def getAuthCode(driver, url="http://localhost/"):  captchaUrl = url + "common/random"  driver.get(captchaUrl)   time.sleep(0.5)  driver.save_screenshot("captcha.jpg")  #截屏,并保存圖片  #urlretrieve(captchaUrl, "captcha.jpg")  time.sleep(0.5)  cleanImage("captcha.jpg")  p = subprocess.Popen(["tesseract", "captcha.jpg", "captcha"], stdout=/             subprocess.PIPE,stderr=subprocess.PIPE)  p.wait()  f = open("captcha.txt", "r")    #Clean any whitespace characters  captchaResponse = f.read().replace(" ", "").replace("/n", "")  print("Captcha solution attempt: " + captchaResponse)  if len(captchaResponse) == 4:    return captchaResponse  else:    return Falsedef withoutCookieLogin(url="http://org.cfu666.com/"):  driver = webdriver.Chrome()  driver.maximize_window()  driver.get(url)  while True:       authCode = getAuthCode(driver, url)    if authCode:      driver.back()      driver.find_element_by_xpath("http://input[@id='orgCode' and @name='orgCode']").clear()      driver.find_element_by_xpath("http://input[@id='orgCode' and @name='orgCode']").send_keys("orgCode")      driver.find_element_by_xpath("http://input[@id='account' and @name='username']").clear()      driver.find_element_by_xpath("http://input[@id='account' and @name='username']").send_keys("username")      driver.find_element_by_xpath("http://input[@type='password' and @name='password']").clear()      driver.find_element_by_xpath("http://input[@type='password' and @name='password']").send_keys("password")             driver.find_element_by_xpath("http://input[@type='text' and @name='authCode']").send_keys(authCode)      driver.find_element_by_xpath("http://button[@type='submit']").click()      try:        time.sleep(3)        driver.find_element_by_xpath("http://*[@id='side-menu']/li[2]/ul/li/a").click()        return driver      except:        print("authCode Error:", authCode)        driver.refresh()  return driverdriver = withoutCookieLogin("http://localhost/")driver.get("http://localhost/enterprise/add/")

怎么獲取我們需要的驗(yàn)證碼

在這獲取驗(yàn)證碼的道路上,我掉了太多的坑,看過太多的文章,很多都是教你驗(yàn)證碼的識別方法,但是沒有說明,怎么獲取你當(dāng)前需要的驗(yàn)證碼圖片。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 彝良县| 庄河市| 舞钢市| 梅河口市| 华阴市| 海原县| 吉木乃县| 长乐市| 临海市| 德昌县| 综艺| 峨眉山市| 衡山县| 渭南市| 龙海市| 河间市| 昭通市| 大埔区| 香格里拉县| 宝坻区| 年辖:市辖区| 霍邱县| 株洲市| 积石山| 栾城县| 奇台县| 鸡东县| 靖州| 神池县| 科尔| 岐山县| 绵竹市| 日照市| 台湾省| 兴文县| 张家口市| 滨海县| 张家港市| 无锡市| 贡山| 长沙市|