文章目錄
python爬蟲 -----圖書館搶座
本人也是一位考研學子 奈何圖書館座位總搶不到 就利用學過的技術作了一個圖書館搶座系統。
主要原理是利用提交post表單的形式進行搶座。
python
驗證碼識別
整個爬蟲最難的可能就是驗證碼了,小編天然也走過不少歪路,有用過pytesseract識別,這pytesseract是真的垃圾,正確率不可直視 後來採用騰訊的一個接口進行測試 接口測試天然是可行的 奈何也得花個7-8秒 還不如手搶 在一次偶然的機會 經過文獻、百度終於找到了大哥muggle_ocr 這個大哥但是拯救我於水火之中啊 0.3秒識別 廢話很少說了代碼粘上cookie
#file_name是驗證碼圖片路徑 with open(file_name, "rb") as f: captcha_bytes = f.read() text = sdk.predict(image_bytes=captcha_bytes)
分析登陸請求信息
實質仍是以post的形式提交表單。經過fiddler抓包獲得,提交的信息和請求頭以下:
session
用戶登陸獲取請求信息尤爲是cookie
登陸有一個重點就是利用session域保存一整個會話,爲方便以後的獲取驗證碼,以及搶座作準備。而後進行簡單登陸吧代碼以下:多線程
def login(self,username,password,quyu1,js3,zuoweihao): ses = requests.session() url='http://172.16.47.84/Login.aspx' date={ '__VIEWSTATE': '/wEPDwUJODE2Mzg3MTk0ZGTiyMF48vnOd3k6J7zu3Z26Lhf+t0nElGTEKl9fwh3L8g==', '__EVENTVALIDATION': '/wEWBAKm8rLABwLs0bLrBgLs0fbZDAKM54rGBkCiS2WHGa6+EL0Kh6yO5Ah09T75GOA5NPCLw47Aiepp', 'TextBox1': username, 'TextBox2': password, 'Button1': '登陸', } str = '' ses.post(url,headers=headers01,data=date) return str
經過cookie獲取驗證碼
根據登陸獲取的session域進行獲取驗證碼,保存在相應的路徑,代碼以下:併發
def yanzhengmaimage(self,ses): str1 = ses.get("http://172.16.47.84/VerifyCode.aspx?", headers=headers01) imagename=ses.__str__()[-19:-1] with open('code02'+imagename+'.jpg', 'wb') as img: img.write(str1.content)
分析搶座請求信息
主要如下面代碼爲主
python爬蟲
利用保存的cookie會話發送post 以及get請求
def tomorrow(self,ses,quyu1='3',js3='207',zuoweihao='001'): #quyu1 表明區域 1東區 2中區 3 西區 #js3 表明教室 正常三位數字 #zhuoweihao 表明座位號 3位數字 str=quyu1+js3+zuoweihao url = 'http://172.16.47.84/Verify.aspx?seatid='+str date = { '__VIEWSTATE': '/wEPDwUKMTcwNzM5ODc3NGRkFTNhg2TJCMmXjk16k+jkM2+o35s9J3SOm+JNsHJEwo4=', '__EVENTVALIDATION': '/wEWAwL5+IeIAgLs0Yq1BQKM54rGBlbX/7GsfmI6ZGnyG3S+AAk6bsW9xrBTrDecfP4rhl+R', 'TextBox3': '', 'Button1': '提 交', } # self.base6434(ses) hi = ses.get(url, headers=headers01) date['TextBox3'] = self.base6434(ses) resp = ses.post(url, headers=headers02, data=date) soup = BeautifulSoup(resp.text, 'lxml') Soup = soup.find_all('script')[0] print(Soup) print(zuoweihao) ses.close() return Soup.text
搶座成功結果圖
先寫到這裏 再更新 小編累了
post