爬虫類-図書館のグラブシート

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

成功したシートグラブの図

ここに写真の説明を挿入
ここに書き込んでからエディターを更新した後、疲れました

マルチスレッドを使用して複数のアカウントに同時に送信し、シートを取得します

成功した同時シートグラブのスクリーンショット

おすすめ

転載: blog.csdn.net/weixin_46293908/article/details/109273612