記事ディレクトリ
Pythonクローラー-----ライブラリが席を確保
私も大学院生ですが、図書館の席が取れないので、学んだ技術を使って図書館の席をつかむシステムを作りました。
主な原則は、座席を確保するために投稿フォームを送信するフォームを使用することです。
識別コード
クローラーの最も難しい部分は検証コードかもしれません。編集者は自然に多くの曲がった道を通り抜けました。それはpytesseractによって認識されました。このpytesseractは本当にゴミです。正確さは直接見ることができません。後でテストのためにTencentのインターフェースを使用します。実現可能になるまでに7〜8秒かかります。偶然にそれをつかむ方が良いです。文献から、Baiduはついに兄のmuggle_ocrを見つけました。この兄は私を火と水から救いました。
#file_name是验证码图片路径
with open(file_name, "rb") as f:
captcha_bytes = f.read()
text = sdk.predict(image_bytes=captcha_bytes)
ログイン要求情報を分析する
本質は、投稿の形でフォームを提出することです。フィドラーキャプチャを通じて取得された、送信された情報とリクエストヘッダーは次のとおりです。
要求された情報、特にCookieを取得するためのユーザーログイン
ログインの重要なポイントの1つは、セッションドメインを使用してセッション全体を保存し、後で確認コードを取得して座席を確保する準備を容易にすることです。次に、ログインするだけです。コードは次のとおりです。
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から確認コードを取得する
ログインによって取得したセッションドメインに従って検証コードを取得し、対応するパスに保存します。コードは次のとおりです。
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)
シートグラブリクエスト情報を分析する
主に次のコードに基づいています
保存されたCookieセッションを使用して、投稿を送信し、リクエストを取得します
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
成功したシートグラブの図
ここに書き込んでからエディターを更新した後、疲れました