


Python implémente la fonction de réservation automatique de la salle d'étude de la bibliothèque
Cet article présente principalement en détail la fonction de réservation automatique de la salle d'étude de la bibliothèque en python. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Cet article partage l'implémentation de python avec tout le monde. pour la réservation automatique de la salle d'étude de la bibliothèque est pour votre référence. Le contenu spécifique est le suivant
Introduction
De nombreuses écoles offrent désormais aux étudiants un très bon environnement d'apprentissage, Cela se reflète généralement dans les installations et l'équipement des salles d'auto-apprentissage. Ce que je dois mentionner à ce sujet, c'est la bibliothèque de notre école. Avec la construction de la nouvelle bibliothèque, plusieurs zones fonctionnelles ont été aménagées dans la bibliothèque. Chaque étage est divisé en quatre zones : A, B, C et D, reliées. au nord et au sud, les couloirs sont reliés et un escalier en colimaçon traverse le premier au cinquième étage. La zone A est une zone d'auto-apprentissage ; les zones B et C sont des librairies de sciences sociales et de sciences naturelles qui intègrent la collection et la lecture ; la zone D est une zone fonctionnelle spéciale, comprenant une salle de cinéma et de télévision, un centre d'expérience de création de médias numériques, un espace intelligent. une salle de formation et une salle de lecture électronique de bureau en nuage, etc. ; il y a douze grandes et petites salles d'étude dans les couloirs est-ouest des zones B et C ; il y a des zones de lecture de loisirs dans les couloirs nord-sud.
J'ai copié le paragraphe ci-dessus sur le site officiel de la bibliothèque, mais je dois vraiment féliciter la bibliothèque de l'école. Revenant au sujet de cet article, l'école met gratuitement à la disposition des enseignants et des étudiants des salles d'étude confortables, de haute qualité et bien équipées. Cependant, ces salles d'étude nécessitent des réservations en ligne avant de pouvoir être utilisées. Les réservations pour le lendemain commencent à 00h00 tous les jours. Par conséquent, si vous souhaitez prendre rendez-vous pour une salle d'étude dans une plage horaire (3 heures), vous devez le faire. Je dois brûler l'huile de minuit. Bien sûr, avoir des mains rapides sera un énorme avantage dans ce processus. Si vous vous couchez tôt le soir et que la vitesse de vos mains n'est pas rapide, vous ne pourrez pratiquement pas prendre rendez-vous dans la salle d'étude. Il m'est arrivé d'apprendre récemment un petit robot d'exploration Python et je prévois d'utiliser le robot pour m'aider à accomplir cette tâche ardue. Ha ha ha ha ! (ps : Pour éviter tout accès malveillant, tous les liens ne seront pas publiés)
Idées d'implémentation Python
L'idée est assez simple quand on y pense. Ce n'est rien. plus que vous connecter au compte et rechercher une chambre, soumettre une réservation. Alors essayons :
Compte de connexion
Ouvrez d'abord l'interface de connexion pour notre réservation de salle d'étude, le lien est : U2FsdGVkX19NdfJkghN54Msvy1zl7AucRur/ct0nz4orPI7uLkSDsvuFMgr0fGcO
rn9Z/f8h3bds9w==
D'accord, cette première étape de connexion à votre compte est un test pour moi en tant que débutant, mais je ne peux pas être timide. En se référant à la méthode utilisée par d'autres grands, il s'agit d'ouvrir Firebug de Firefox (ctrl+shift+e) pour vérifier la situation du réseau, et d'effectuer une connexion normale dans ce cas.
Vous pouvez voir que nous avons un message ici, puis vous pouvez utiliser la méthode request.post en python.
Pour vous connecter avec succès, vous devez masquer votre identité en tant que robot d'exploration. Dans l'en-tête du message, vous pouvez voir l'en-tête de notre demande. form Own headers = {…} pour tromper le serveur.
Regardez la page des paramètres. Il n'y a ici que trois données de formulaire, correspondant au code de vérification, au numéro de compte et au mot de passe. Copiez les paramètres ici pour former nos données = {...}. Ce qui nécessite notre attention, c'est ce code de vérification. Qu'il puisse être reconnu manuellement ou automatiquement par une machine, le code de vérification doit être enregistré sous forme de fichier local. En conséquence, il y a un problème. Chaque fois que vous accédez au serveur, le code de vérification change. Maintenant, réfléchissons-y. Nous devons d'abord obtenir le code de vérification et le sauvegarder localement, ce qui nécessite une visite sur le serveur. Enfin, nous devons soumettre nos paramètres pour nous connecter. Cette fois, nous visitons à nouveau le serveur, cette fois pour. vérification. Le code de vérification et le code de vérification que nous avons obtenu ne sont plus le même code de vérification. Lors de la première tentative, je n'ai de toute façon pas pu me connecter au serveur, car les deux codes de vérification ne correspondaient pas. Comment rendre le code de vérification obtenu pour la première fois cohérent avec le code de vérification lors de sa soumission ?
Le même cookie est nécessaire ici. Dans les plusieurs images ci-dessus, nous pouvons tous voir qu'il y a une valeur de cookie. Pour garantir la synchronisation, nous devons nous assurer que la valeur du cookie lorsque nous obtenons le code de vérification est cohérente avec la valeur du cookie lors de la soumission du mot de passe du compte. Par conséquent, dans mon programme, la première étape que je fais consiste à obtenir une valeur de cookie, puis à utiliser cette valeur de cookie comme paramètre dans les en-têtes. C'est l'idée devous connecter. Je voudrais ajouter que j'ai identifié manuellement le code de vérification ici >﹏<.
Trouver une chambre
Cette étape est en fait une étape inutile. Pourquoi y a-t-il cette étape ? Selon les habitudes humaines de réservation, quel type d'étape allons-nous produire. Cependant, si vous utilisez un robot, vous pouvez directement soumettre le formulaire de réservation après vous être connecté avec succès ? . Bien entendu, si vous souhaitez rendre le programme de réservation automatique plus intelligent, vous pouvez ajouter cette étape pour vérifier quelles chambres peuvent encore être réservées, et ajouter ici quelques règles personnalisées. Je l'ai juste sauté. . .
Soumettre un rendez-vous
De la même manière que pour la connexion, nous le soumettons également manuellement pour vérifier la situation du réseau, puis nous pouvons utiliser Python pour simuler ce processus. Je ne l'expliquerai pas ici avec des images. La méthode request.post est également utilisée pour la soumission ici. Cependant, une chose à noter est que les en-têtes ici sont différents des en-têtes lors de la connexion, je voudrais donc vous rappeler que si vous utilisez d'autres programmes de réservation similaires, vous pouvez faire attention pour voir si les en-têtes lors de la publication de contenus différents sont cohérent. J'ai été dupe ici pendant un moment.
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # # @Version : 1.0 # @Time : 2018/4/10 # @Author : 圈圈烃 # @File : reservation_4.py import requests import re import json import datetime import time def get_cookies(): """获得cookies""" url = 'http://**************' s = requests.session() s.get(url) ck_dict = requests.utils.dict_from_cookiejar(s.cookies) # 将jar格式转化为dict ck = 'JSESSIONID=' + ck_dict['JSESSIONID'] # 重组cookies """获得二维码""" path = './code.png' get_cookies_headers = { 'user-anget': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0', 'Cookie': ck} get_cookies_url = 'http://**************' code_image = requests.get(get_cookies_url, headers=get_cookies_headers) with open(path, 'wb') as fn: fn.write(code_image.content) fn.close() print('验证码保存成功') return ck def login(cookies, hour, minute): login_headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Length': '45', 'Content-Type': 'application/x-www-form-urlencoded', 'Cookie': cookies, 'Host': '**************', 'Pragma': 'no-cache', 'Referer': 'http://**************', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0' } login_url = 'http://**************' login_data = { 'codeImage': input('请输入验证码:'), 'uname': '**************', 'upass': '**************' } requests.post(login_url, data=login_data, headers=login_headers) res = requests.get('http://**************', headers=login_headers) reg_h = r'<option value=(.*?)>\d{4}-\d{2}-\d{2}' # 匹配可提供预约的hash value_h = re.findall(reg_h, res.text) """定时""" counter = 0 while (True): now = datetime.datetime.now() # 获取当前系统时间 if now.hour == hour and now.minute == minute: break time.sleep(0.5) # print(now) counter = counter + 1 if counter == 240: res = requests.get('http://**************', headers=login_headers) reg_h = r'<option value=(.*?)>\d{4}-\d{2}-\d{2}' # 匹配可提供预约的hash reg_t = r'(\d{4}-\d{2}-\d{2})' # 匹配可提供预约的日期 value_h = re.findall(reg_h, res.text) value_t = re.findall(reg_t, res.text) with open('./con_log.txt', 'a') as fjs: fjs.write(eval(value_h[-1])+' '+value_t[-1]+' '+str(now)+' \n') fjs.close() print('保存成功') counter = 0 return str(eval(value_h[-1])) def reservation(day_hash, cookies, stime, etime): reservation_data = { '_etime': etime, # 结束时间11点,其值为11*60=660 '_roomid': '1285b3ca77594b3095c7b89d4922553c', # 房间Id '_seatno': '', '_stime': stime, # 开始时间8点,其值为8*60=480 '_subject': '学习', # 研讨主题 '_summary': '学习', # 研讨大纲 'ruleId': day_hash, 'usercount': 3, # 预约人数 'users': '**************', # 学号 'UUID': '**************' } reservation_headers = { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Length': '239', 'Content-Type': 'application/json', 'Cookie': cookies, 'Host': '**************', 'Pragma': 'no-cache', 'Referer': 'http://**************', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0' } reservation_js = json.dumps(reservation_data) reservation_url = 'http://**************' status = requests.post(reservation_url, data=reservation_js, headers=reservation_headers) # print(stime, etime) # print(status) print(status.text) def main(): """预约策略一:11:20-20.40""" full_stime = ['1060', '870', '680'] full_etime = ['1240', '1050', '860'] """预约策略二:10:00-13:00;13:50-16:50;17:40-20:40""" stime = ['1060', '830', '600'] etime = ['1240', '1010', '780'] cookies = get_cookies() day_hash = login(cookies, 0, 0) # 设定定时时间 for i in range(0, 3): reservation(day_hash, cookies, stime[i], etime[i]) if __name__ == '__main__': main()
Obtenir l'effet
Depuis que j'ai appris le python, maman, je n'ai plus à m'inquiéter de ne pas pouvoir accéder à une salle d'étude. Après avoir ajouté quelques lignes de procédures de chronométrage au programme, vous pouvez me réserver automatiquement une salle d'étude à 00h00. Grâce à des tests, nous avons constaté qu'il est possible de prendre rendez-vous dans une large mesure. Par exemple, du 4 au 12, il faut 7 secondes pour prendre rendez-vous pour trois périodes, mais du 4 au 13, cela prend 7 secondes. en fait, cela a pris 21 secondes, et cela a fait Pendant un certain temps, d'autres camarades de classe m'ont invité à sortir. Bien entendu, ce programme doit encore être amélioré pour remporter une victoire complète sur la « vitesse de la main ».
Ajoutez-le à la fin
S'il y a des lacunes, veuillez les partager.
Recommandations associées :
Python réalise une connexion automatique au réseau du campus
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.
