日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python爬蟲如何解決圖片驗證碼

瀏覽:20日期:2022-06-27 18:52:57

之前剛開始做爬蟲的時候遇到過登錄驗證碼問題,看過很多帖子都沒有解決我的問題,發現大多數帖子都是治標不治本,于是想分享一下自己的解決方案。本次采用的網站是古詩文網,使用百度API,因為百度API免費!免費!免費!適合自己學習的時候使用。如果還沒有使用過百度API識別驗證碼的朋友可以看一下我的這個帖子。以下案例采用的時古詩文網:登錄古詩文網,

1、selenium處理圖片驗證碼

先定位到驗證碼圖片,在獲取驗證碼圖片在頁面中的位置,使用save_screenshot截取頁面,再根據圖片的位置去截取驗證碼,最后通過接口識別文字獲取驗證碼,直接上代碼:

element = driver.find_element_by_id(’imgCode’) # 定位驗證碼圖片# 獲取驗證碼圖片在網頁中的位置left = int(element.location[’x’]) # 獲取圖片左上角坐標xtop = int(element.location[’y’]) # 獲取圖片左上角yright = int(element.location[’x’] + element.size[’width’]) # 獲取圖片右下角xbottom = int(element.location[’y’] + element.size[’height’]) # 獲取圖片右下角y# 通過Image處理圖像path = current_dir + str(random.random()) + ’.png’ # 生成隨機文件名driver.save_screenshot(path) # 截取當前窗口并保存圖片im = Image.open(path)# 打開圖片im = im.crop((left, top, right, bottom)) # 截圖驗證碼im.save(path) # 保存驗證碼圖片# 使用百度API識別驗證碼def get_code(): client = AipOcr(APP_ID, API_KEY, SECRET_KEY) # 百度API文檔中提供的方法識別文字 # 由于我處理的驗證碼圖片沒有填多的線條,所以直接采用灰度是驗證碼數字更加清晰,具體的處理方式可根據驗證碼的實際情況而定 im = Image.open(path) # 轉換為灰度圖像 im = im.convert(’L’) im.save(path) # 讀取圖片,應為百度API中提供的方法參數只能是字節流 with open(path, ’rb’)as f: image = f.read() # 使用API中提供的方法識別驗證碼并返回驗證碼 code = client.basicGeneral(image) print(code[’words_result’][0][’words’]) # {’words_result’: [{’words’: ’4TBiD ’, ’location’: {’top’: 1, ’left’: 6, ’width’: 43, ’height’: 13}}], ’log_id’: 1358288307112378368, ’words_result_num’: 1} return code[’words_result’][0][’words’]2、使用requests請求驗證碼

這里用到了會話機制,對于初學者來說可能不太了解,簡單說一下會話機制的作用,會話就是用來保存你之前請求的cookie,讓瀏覽器知道你之前就在這里,這樣瀏覽器就不會認為你重新來到這里,從而刷新驗證碼,這樣就可以帶著我們獲取的驗證碼去登錄了。

conn = requests.Sessoin( # 創建會話resp = conn.get(’https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx’)selector = Selector(text=resp.text)img_url = ’https://so.gushiwen.cn/’+selector.xpath(’.//img[@id='imgCode']/@src’).get() # 獲取圖片的路由img = conn.get(img_url) # 保持會話請求filename = str(random.random()) + ’.png’with open(filename, ’wb’)as f: f.write(img.content)# 為了后面的調用接口識別不報圖片格式錯誤,進行一次圖片轉換im = Image.open(filename)im.save(filename)# 使用二進制方式讀取圖片with open(filename, ’rb’)as f:image = f.read()data = client.handwriting(image) # diao’yong# 使用API中提供的方法識別驗證碼并返回驗證碼code = client.basicGeneral(image)code = code[’words_result’][0][’words’]selenium源碼

# -* coding: utf-8 *-import timeimport randomfrom PIL import Imagefrom aip import AipOcrfrom selenium.webdriver import Chrome# 百度API參數APP_ID = ’23647800’API_KEY = ’n95KOQgVuOMoAP72qZZo7uoN’SECRET_KEY = ’7yhyGglHUsY52DD8kf4w0Qjnxum07hMK’client = AipOcr(APP_ID, API_KEY, SECRET_KEY) # 調用API接口def scrapy(username, password): ''' :param username: 用戶名 :param password: 密碼 ''' driver = Chrome() driver.get(’https://so.gushiwen.cn/user/login.aspx’) driver.find_element_by_id(’email’).send_keys(username) # 輸入賬號 driver.find_element_by_id(’pwd’).send_keys(password) # 輸入密碼 element = driver.find_element_by_id(’imgCode’) # 定位驗證碼圖片 # 獲取驗證碼圖片在網頁中的位置 left = int(element.location[’x’]) # 獲取圖片左上角坐標x top = int(element.location[’y’]) # 獲取圖片左上角y right = int(element.location[’x’] + element.size[’width’]) # 獲取圖片右下角x bottom = int(element.location[’y’] + element.size[’height’]) # 獲取圖片右下角y # 通過Image處理圖像 filename = str(random.random()) + ’.png’ # 生成隨機文件名 driver.save_screenshot(filename) # 截取當前窗口并保存圖片 im = Image.open(filename) # 打開圖片 im = im.crop((left, top, right, bottom)) # 截圖驗證碼 im.save(filename) # 保存驗證碼圖片 # 由于我處理的驗證碼圖片沒有填多的線條,所以直接采用灰度是驗證碼數字更加清晰,具體的處理方式可根據驗證碼的實際情況而定 im = Image.open(filename) # 轉換為灰度圖像 im = im.convert(’L’) im.save(filename) # 讀取圖片,應為百度API中提供的方法參數只能是字節流 with open(filename, ’rb’)as f: image = f.read() # 使用API中提供的方法識別驗證碼并返回驗證碼 data = client.basicGeneral(image) try: code = data[’words_result’][0][’words’] except: return data[’error_msg’] driver.find_element_by_id(’code’).send_keys(code) # 輸入驗證碼 driver.find_element_by_id(’denglu’).click() # 點擊登錄 time.sleep(1000) # 為了看清登錄,等待1000秒if __name__ == ’__main__’: print(scrapy(username, password)) # 傳入你在古詩文網注冊的賬號密碼requests源碼

# -* coding: utf-8 *-import osimport randomimport reimport requestsfrom PIL import Imagefrom aip import AipOcrfrom scrapy import Selectorheaders = { ’referer’: ’https://so.gushiwen.cn/user/login.aspx’, ’user-agent’: ’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36’}# 百度API參數APP_ID = ’23647800’API_KEY = ’n95KOQgVuOMoAP72qZZo7uoN’SECRET_KEY = ’7yhyGglHUsY52DD8kf4w0Qjnxum07hMK’def scrapy(username, password): ''' :param username: 用戶名 :param password: 密碼 ''' client = AipOcr(APP_ID, API_KEY, SECRET_KEY) # 調用API接口 conn = requests.Session() # 創建會話 resp = conn.get(’https://so.gushiwen.cn/user/login.aspx’, headers=headers) # 獲取登錄頁面 selector = Selector(text=resp.text) __VIEWSTATE = selector.xpath(’.//input[@id='__VIEWSTATE']/@value’).get() __VIEWSTATEGENERATOR = selector.xpath(’.//input[@id='__VIEWSTATEGENERATOR']/@value’).get() img_url = ’https://so.gushiwen.cn/’ + selector.xpath(’.//img[@id='imgCode']/@src’).get() # 獲取圖片的路由 img = conn.get(img_url, headers=headers) # 獲取圖片路由 # 保存圖片 filename = str(random.random()) + ’.png’ # 隨機生成文件名, 圖片格式不能為jpg,API不支持jpg格式的識別 with open(filename, ’wb’)as f: f.write(img.content) # 由于我處理的驗證碼圖片沒有填多的線條,所以直接采用灰度是驗證碼數字更加清晰,具體的處理方式可根據驗證碼的實際情況而定 im = Image.open(filename) # 轉換為灰度圖像 im = im.convert(’L’) im.save(filename) # 使用二進制方式讀取圖片 with open(filename, ’rb’)as f: image = f.read() # # 標準識別, 每天免費50000次 # data = client.basicGeneral(image) # 精確識別,每天免費500次 data = client.handwriting(image) # 捕獲一下接口識別當中的錯誤,可參照文檔查看報錯原因 try: code = data[’words_result’][0][’words’] except: return data[’error_msg’] form_data = { ’__VIEWSTATE’: __VIEWSTATE, ’__VIEWSTATEGENERATOR’: __VIEWSTATEGENERATOR, ’from’: ’’, ’email’: username, ’pwd’: password, ’code’:cod, ’denglu’: ’登錄’ } # 登錄 html = conn.post(’https://so.gushiwen.cn/user/login.aspx’, headers=headers, data=form_data).text # 獲取登錄標志位 login_flag = re.findall('alert(’(.*?)’);',html)[0] if re.findall('alert(’(.*?)’);',html) else ’’ if not login_flag: return ’登錄成功!’ elif ’驗證碼有誤!’ in login_flag: return '驗證碼錯誤'if __name__ == ’__main__’: print(scrapy(username, password))

以上就是python爬蟲如何解決圖片驗證碼的詳細內容,更多關于python 解決圖片驗證碼的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜久久免费观看| 极品裸体白嫩激情啪啪国产精品| 欧美一级精品| 国产亚洲电影| 欧美日韩中文一区二区| 日本亚州欧洲精品不卡| 日本а中文在线天堂| 欧美亚洲二区| 日韩视频一区二区三区在线播放免费观看| 亚洲欧美日韩精品一区二区| 久久久国产精品网站| 性一交一乱一区二区洋洋av| 麻豆久久久久久| 亚洲人亚洲人色久| 国产精品腿扒开做爽爽爽挤奶网站| 精品视频国产| 日韩精品免费视频一区二区三区 | 欧美日韩国产一区精品一区| 国产精品啊啊啊| 日韩一区二区三免费高清在线观看 | 国产欧美一区二区色老头| 免费日韩av| 伊人国产精品| 综合一区av| 亚洲久久一区| 视频一区二区三区入口| 亚洲精品极品少妇16p| av高清一区| 免费av一区二区三区四区| 午夜av成人| 久久一区二区中文字幕| 女主播福利一区| 亚洲精品九九| 国产精品九九| 精品国产18久久久久久二百| 久久国产精品美女| 国产精品久久久久久久久久久久久久久 | 亚洲视频综合| 亚洲女同中文字幕| 噜噜噜久久亚洲精品国产品小说| 国产一区二区中文| 中文国产一区| 蜜臀久久99精品久久久久宅男| 亚洲欧美日本国产| 欧美日韩a区| 欧美少妇精品| 蜜臀av一区二区在线免费观看| 亚洲欧美网站在线观看| 久久精品欧洲| 日韩一级网站| 欧美国产视频| 91久久视频| 国产高清亚洲| 六月婷婷一区| 国产福利电影在线播放| 99香蕉国产精品偷在线观看| 欧美片网站免费| 成人午夜国产| 国产精品色在线网站| 亚洲高清av| 日本中文字幕视频一区| 日韩一区亚洲二区| 清纯唯美亚洲综合一区| 999久久久91| 国产精品mv在线观看| 亚洲综合精品| 久久久久欧美精品| 久久精品一区二区三区中文字幕| 女主播福利一区| 女生影院久久| 久久99精品久久久野外观看| 婷婷综合电影| 人人精品人人爱| 成人在线丰满少妇av| 国产一精品一av一免费爽爽| 久久人人精品| 国产一区精品福利| 国产精品乱战久久久| 日韩高清一区二区| 亚洲精品一级| 亚洲丝袜美腿一区| 亚州精品视频| 日韩和欧美一区二区| 亚洲v天堂v手机在线| 日韩精品欧美精品| 亚洲免费福利一区| 免费成人在线视频观看| 中文不卡在线| 亚洲日本欧美| 国产美女视频一区二区| 免费在线看一区| 蜜臀av一区二区在线免费观看| 好吊日精品视频| 日韩精品一区第一页| 日韩av在线免费观看不卡| 国产欧美一区二区三区国产幕精品| 日韩专区视频网站| 国产精品xxxav免费视频| 国产成人久久| 亚洲男女av一区二区| 婷婷亚洲成人| 国产一区二区三区探花| 999国产精品| 婷婷久久免费视频| 国产精品久久观看| 伊人久久视频| 久久一二三区| 久久精品福利| 伊人久久成人| 欧美国产免费| av不卡在线看| 国产在视频一区二区三区吞精| re久久精品视频| 国产免费久久| 午夜在线观看免费一区| 狠狠久久伊人中文字幕| 亚洲欧美日韩专区| 久久精品国产久精国产| 欧美日韩国产在线观看网站| 国产欧美日韩一级| 国产亚洲观看| 国产精品日本| 日韩伦理福利| 你懂的国产精品| 日韩一区二区三区精品| 日本久久成人网| 日韩成人精品一区二区| 久久国产尿小便嘘嘘| 国产精品毛片| 欧美13videosex性极品| 精品一区二区男人吃奶| 综合激情在线| 欧美日韩精品一本二本三本| 成人自拍av| 亚洲第一精品影视| 久久亚洲国产精品尤物| 国产精品激情| 国产精品毛片视频| 国产调教精品| 国产欧美一级| 久久不见久久见国语| 国产精品亚洲人成在99www| 蜜芽一区二区三区| 亚洲精品1区| 亚洲精品自拍| 国产视频一区二| 久久久久观看| 久久久久九九精品影院| 国内在线观看一区二区三区| 91亚洲一区| 深夜福利视频一区二区| 蜜桃精品在线| 蜜桃av一区| 国产精品一区二区三区四区在线观看| 日韩高清不卡一区| 欧美www视频在线观看| 欧洲亚洲一区二区三区| 视频在线观看一区二区三区| 亚洲精品系列| 欧美精品不卡| 国产精品99一区二区| 日韩欧乱色一区二区三区在线| 国产欧美一区二区精品久久久| 福利精品在线| 国产精品日韩久久久| 亚洲综合福利| 电影91久久久| 亚洲2区在线| 欧美黄色网页| 69堂免费精品视频在线播放| 麻豆视频在线观看免费网站黄 | 波多野结衣久久精品| 五月天激情综合网| 欧美aaaaaa午夜精品| 91精品二区| 欧美精品影院| 久久精品中文| 国产欧美自拍| 亚洲最大av| 四虎影视精品| 精品一区二区三区中文字幕在线| 久久av一区| 特黄毛片在线观看| 国产精品v日韩精品v欧美精品网站 | 丝袜美腿一区二区三区| 国产在线观看www| 国产欧美久久一区二区三区| 黄色亚洲大片免费在线观看| 亚洲最新无码中文字幕久久 | 日韩av网站在线免费观看| 久久亚洲国产| 日韩高清中文字幕一区二区| 久久在线91| 国产精品毛片久久久| 欧美一区免费| 国产亚洲久久| 国产精品久久久免费| 亚洲婷婷丁香| 亚洲欧美日韩国产综合精品二区| 久久婷婷激情|