驗證碼爬取並識別 雲大urp教務系統大作戰(1)

2021-09-20 04:31:08 字數 2410 閱讀 4182

爬取所有驗證碼的**:

#encoding: utf-8  

import sys

reload(sys)

sys.setdefaultencoding('utf8')

#上述**解決中文亂碼問題

import urllib2

import json

import requests

from requests import exceptions

##匯入所需要的包

url = ''

png_names = set()

#此處取巧使用set自動去重.

fw =open('png_name.txt','a')

def basic_oauth():

auth ='新增選課介面f12獲取到的auth值'

'authorization':'%s'%auth}

try:

num = len(png_names)

response = requests.get(url,headers=headers)

print response.text

png_names.add(response.text)

#此處只有當前新獲取的驗證碼是一張集合裡並沒有存在過的。

#切片[1:-1]去除掉雙引號。

if len(png_names)>num:

c =response.text[1:-1]

print "add"

fw.write(response.text+'\n')

#下面儲存驗證碼到本地

file =open('./captcha/'+str(c)+'.png','wb')

req = urllib2.urlopen(''+str(c)+'.png')

buf = req.read()

file.write(buf)

print "**************"

print ("第%d張正在儲存"%len(png_names))

except exception as e:

print e

pass

for x in xrange(1,100):

basic_oauth()

爬取過程

已爬取到本地的驗證碼

經統計urp真實驗證碼存量為999張。

urp驗證碼數量

既然已經拿到了所有的驗證碼,我們對於驗證碼進行識別工作。

可以進行人工的肉眼識別,不過這樣太過勞累,既然我們是python程式設計師,我們應該尋找一些偷懶的方法。(畢竟人生苦短)

阿里雲市場的驗證碼識別介面

**為:10元1000次

驗證碼中英數介面api

#datalist.txt中存入了[名,識別到的驗證碼值]

fw = open('data_list.txt','a')

fw.write(str(png_name)+',')

fw.write(str(jsonobj['showapi_res_body']['result'])+'\n')

fw.close()經過對於api的請求我們可以得到乙份驗證碼的字典檔案。通過此檔案可以通過key=驗證碼的檔案id,得到驗證碼的真實值。

驗證碼字典表檔案

此時我們似乎已經大功告成解決了驗證碼這一難題。

python爬蟲 爬取驗證碼並識別

步驟 呼叫平台 這裡使用的是超級鷹 提供的示例 進行資料識別 爬取古詩文網登入介面的驗證碼並識別 from lxml import etree from hashlib import md5 import requests import self class chaojiying client ob...

資料爬取 超級鷹驗證碼識別

usr bin env python coding utf 8 import requests from hashlib import md5 class chaojiying client object def init self,username,password,soft id self.us...

python 爬取12306驗證碼

import ssl import urllib2 i 1import time while 1 不加的話,無法訪問12306 time.sleep 1 有時需要加延時,以防被封。i i 1 f.write data f.close 以下就是爬取的 的截圖 12306的驗證碼經常讓人眼花繚亂,眼睛仔...