Maison  >  Article  >  Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

藏色散人
藏色散人avant
2019-01-21 11:12:204408parcourir

Utilisez l'automatisation du programme pour actualiser et cliquer pour récupérer des tickets, et vous disposez de ce programme de récupération de tickets Python. Ce programme est une simulation Python du fonctionnement manuel d'un navigateur, de sorte que le programme peut se terminer en raison de divers facteurs liés au réseau ou à d'autres facteurs. Cet article explique principalement les deux points d'optimisation de l'ajout de la fonction de sélection de train et de la fonction de sélection de siège.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Étude de référence recommandée : "Tutoriel Python"

Processus de saisie automatique des tickets

1. Tout d’abord, examinons le processus optimisé de récupération des tickets.

2. Démarrez automatiquement le navigateur et entrez automatiquement le compte de connexion 12306 et le mot de passe définis dans le programme.

3. Saisissez le code de vérification manuellement. La fonction de configuration du code de vérification graphique est trop compliquée et implique une reconnaissance d'image par intelligence artificielle. Le taux de réussite n'est pas élevé si vous le faites vous-même, je vous laisse donc saisir la vérification. codez manuellement. Cliquez ensuite manuellement sur le bouton "Connexion".

4. Après une connexion réussie, la page sera automatiquement vérifiée. Une fois la connexion réussie confirmée, elle passera automatiquement à la page de vérification des billets. Vérifiez les billets en fonction du lieu de départ et de la destination saisis dans votre propre code de programme.

5. En fonction du numéro de train que vous avez saisi, vérifiez si le bouton « Réservation » à droite est en surbrillance et cliquable. S'il n'est pas cliquable, vous continuerez à cliquer sur le bouton « Requête » et actualiserez la page. jusqu'à ce qu'il y ait des billets et cliquez sur le bouton "Bouton".

6. Soumettez la page de commande, sélectionnez le passager et sélectionnez le type de siège. S'il n'y a pas le type que vous souhaitez, par exemple un siège de deuxième classe, la page reviendra à la page de requête de billet de train. et interrogez à nouveau, et ainsi de suite.

7. Après avoir récupéré les billets que vous souhaitez, soumettez la commande, envoyez l'e-mail et c'est fait !

Page de connexion

J'ai maximisé la fenêtre du navigateur pour cette partie. Je ne l'avais pas réglée en plein écran auparavant. La taille d'affichage de l'ordinateur de chacun est différente, donc certains éléments. peut être bloqué. Impossible de cliquer.

Après la connexion, il peut y avoir une invite concernant d'éventuels problèmes avec le réseau. Il s'agit probablement d'un problème de serveur. À ce stade, cliquez manuellement sur le bouton de retour dans le coin supérieur gauche, et il reviendra généralement. à la normale. Si l'invite est toujours là après avoir cliqué une fois, cliquez deux fois.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Page de requête

Interrogez la page du billet de train Il y aura également une invite de délai d'attente pendant les heures de pointe de cette page. On estime qu'il est accessible. En raison d'anomalies du serveur causées par un trop grand nombre de personnes, les tickets peuvent parfois être trouvés très rapidement, mais je ne trouve aucun modèle spécifique.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Nous ne pouvons pas éviter cela. Le programme se rafraîchira automatiquement pour nous jusqu'à ce que la page avec les billets soit actualisée. Fréquence de rafraîchissement : 1 seconde/fois.

La fonction de sélection du train est une fonction qui préoccupe davantage tout le monde. Auparavant, ordre = 0 et la valeur par défaut était tous les trains. Cette fois, vous pouvez saisir le numéro correspondant en fonction de la position du train. Par exemple, le train que vous souhaitez réserver est sur la ligne 5. Il vous suffit de définir order = 5. Concernant ces configurations de paramètres, nous les listerons ci-dessous.

Page de soumission de la commande

Page de soumission de la commande Le programme fera deux choses, la première est de sélectionner en fonction du nom du passager que vous avez entré, et la seconde est basée sur Le jugement est basé sur les sièges saisis. S'il y a des billets pour le siège que vous souhaitez, vous sélectionnerez et soumettrez la commande. S'il n'y a pas de billets pour le siège que vous souhaitez, vous reviendrez à la page précédente et interrogerez les billets à plusieurs reprises. , vérifiez les sièges, et ainsi de suite jusqu'à réserver les billets souhaités.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Instructions pour modifier les paramètres importants

Voici le point clé. Peu importe si vous ne le comprenez pas. . Si vous souhaitez l'exécuter directement à partir du code source, assurez-vous de le lire attentivement. Ici, après avoir obtenu le code source de récupération du ticket, vous devez faire attention et configurer les éléments suivants.

Configuration de l'environnement Python

L'environnement Python que j'ai utilisé pour ce programme est Python 3.6. En fait, tout ce qui est supérieur à 3.5 devrait convenir. Téléchargez le package d'installation de Python3 sur le site officiel. Lors de l'installation, n'oubliez pas de cocher l'option Ajouter Python 3.x au PATH. L'avantage de cocher cette option est qu'une fois l'installation terminée, elle configurera automatiquement les variables d'environnement pour vous. , sans avoir besoin d'installer Python2.x Configure manuellement. L'étape suivante est une installation infaillible. Une fois l'installation terminée, si vous entrez Python dans le terminal pour afficher la version, l'installation est réussie. Si vous ne savez toujours pas comment procéder, je vous suggère de le consulter en ligne. Il existe de nombreux tutoriels en ligne.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

outil pip

pip est un outil général de gestion de bibliothèque Python Il est très pratique d'utiliser pip pour installer et gérer des bibliothèques. . Une fois la première étape terminée, l'outil pip est livré avec. Vous pouvez entrer la commande pip list dans le terminal pour afficher toutes les bibliothèques Python que vous installez actuellement.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Installer et importer les bibliothèques correspondantes

La bibliothèque principale utilisée dans ce programme est splinter. Cette bibliothèque est principalement utilisée pour piloter le navigateur pour faire fonctionner la page. installez-le directement.

pip install splinter

L'adresse du document chinois des didacticiels liés à Splinter est la suivante. Si vous êtes intéressé, vous pouvez en apprendre davantage.

https://splinter-docs-zh-cn.readthedocs.io/zh/latest/tutorial.html

Une fois l'installation terminée, utilisez import pour importer cette bibliothèque dans l'IDE. Si elle ne peut toujours pas être utilisée, pensez à l'installer et à l'introduire dans l'éditeur, et à la présenter. l'installation dans les paramètres. Voir l'image ci-dessous.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Python doit utiliser deux modules fournis avec Python, smtplib et email. Importez directement sans téléchargement.

Donc, la seule chose qui doit vraiment être installée est la bibliothèque Splinter. Les autres peuvent être importées directement et importées dans l'éditeur.

from splinter.browser import Browser
from time import sleep
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.header import Header

Téléchargez le pilote du navigateur et précisez le chemin

Cette question revient souvent, pourquoi avez-vous besoin de télécharger le pilote du navigateur ? Étant donné que le principe sous-jacent de la bibliothèque Splinter est de conduire le navigateur à effectuer les opérations correspondantes via WebDriver, vous devez télécharger le pilote de navigateur correspondant pour utiliser le navigateur correspondant. J'utilise le navigateur Chrome, j'ai donc téléchargé Chromedriver. Il y a un piège ici. Il existe une relation de mappage entre Chromedriver et Chrome. Vous devez télécharger la version correspondante. La relation de mappage est la suivante

ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64

(Tableau de mappage Chrome et ChromeDriver)

Après avoir téléchargé et décompressé chromedriver, copiez son chemin et remplacez le chemin dans la ligne 33 du code source.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés

Paramètres de la fonction de notification par e-mail

Après avoir installé la bibliothèque correspondante ci-dessus, les informations à renseigner sont les suivantes : expéditeur et destinataire L’adresse e-mail de l’expéditeur et le code d’autorisation de l’expéditeur. Les positions à modifier sont donc le compte de messagerie de l'expéditeur et le compte de messagerie du destinataire aux lignes 51 et 52 de la fonction sendMail, ainsi que le code d'autorisation de l'e-mail de l'expéditeur à la ligne 61.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés


Article de référence sur la façon d'obtenir le code d'autorisation 30 lignes de code Python pour envoyer et recevoir automatiquement des emails. L'adresse e-mail que j'utilise pour envoyer des e-mails est Ma petite boîte aux lettres QQ et la boîte aux lettres du destinataire est ma grande boîte aux lettres QQ. Je l'ai essayé. L'expéditeur et le destinataire dans la boîte aux lettres QQ peuvent être les mêmes, c'est-à-dire que vous pouvez vous envoyer des e-mails. Il est recommandé d'exécuter d'abord le code d'envoi d'e-mails indépendamment pour vérifier si l'envoi est effectué. réussi. Généralement, l'échec de l'opération est dû à un code d'autorisation incorrect. Veuillez obtenir à nouveau le code d'autorisation.

La valeur correspondant au siège

Après débogage, on constate que la valeur correspondant aux différents sièges est différente.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés


Après de nombreux débogages, j'ai organisé les valeurs correspondant aux différents sièges dans un tableau.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés


L'emplacement de modification du code se trouve aux lignes 112 et 113 du code source. Les deux lignes doivent être modifiées pour correspondre aux sièges souhaités. . La valeur fera l'affaire.

Nom d'utilisateur 12306 et mot de passe de connexion 12306

Remplacez simplement ces deux éléments par les vôtres dans la fonction principale. Remplacez simplement les lignes 114 et 145 du code source par votre. propre.

Sélection du numéro de train

Le nombre de trains est représenté par le champ de commande
0 représente tous les horaires de train, 1 représente le nombre de trains dans le premier. rangée, et 2 représente le nombre de trains dans la deuxième rangée, et ainsi de suite. Généralement, après avoir saisi le point de départ et la destination, les emplacements de tous les trains sont fixés. Vous pouvez simplement saisir le numéro d'emplacement du train que vous souhaitez réserver. L'emplacement de modification du code source se trouve également dans la fonction principale, ligne 146.

Format du nom du passager

Le nom du passager, tel que passagers = ['XXX', 'XXX'], prend en charge plusieurs sélections. Notez que les billets étudiants doivent être marqués. Remarque La méthode clear est : passagers = ['XXX(student)', 'XXX'], sinon une erreur sera signalée. L'emplacement de modification du code source se trouve également dans la fonction principale, ligne 149.

Format de la date du trajet

Date du trajet, le format est : '2019-01-28', l'emplacement de modification du code source est également dans la fonction principale, ligne 151 .

Obtention des cookies de départ et de destination

En raison de problèmes de temps, cela n'a pas été optimisé Actuellement, vous ne pouvez rechercher et obtenir que manuellement le départ et la destination, et les ouvrir. le vôtre 12306 Accédez à la page de demande de billet de train et indiquez l'origine et la destination. Ouvrez le mode débogage de la page, utilisez la touche de raccourci F12 ou faites un clic droit sur « Inspecter » pour ouvrir le mode débogage, sélectionnez Réseau, et cliquez sur le bouton « Requête » pour obtenir les cookies correspondant à l'origine et à la destination. L'emplacement de modification du code source se trouve également dans la fonction principale, lignes 153 et 155.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés


Pour résumer , ce qui précède doit être modifié, chemin chromedriver : à l'intérieur de la fonction d'initialisation init, la fonction de notification par e-mail envoie et reçoit des boîtes aux lettres Le numéro de compte et le code d'autorisation de l'expéditeur sont modifiés dans la fonction sendMail, et la valeur du siège correspondante est modifiée dans la fonction check_ticket. Les autres informations incluent : le nom d'utilisateur 12306, le mot de passe 12306, la sélection du train, le nom du passager, la date du trajet, la date de départ, le lieu de départ et les valeurs des cookies de destination sont modifiées dans la fonction principale en bas du code source.

Le programme de récupération de billets Python est optimisé, le numéro de train et le siège peuvent être sélectionnés


Remarque importante : En raison du temps limité, ce programme comporte de nombreux éléments de configuration, mais dans l'ordre pour récupérer Ticket, nous ne pouvons essayer qu'une autre méthode. Ce programme simule le fonctionnement manuel du navigateur. Par exemple, en raison de la relation réseau, la page restera longtemps et l'élément ne pourra pas être affiché. trouvé et le programme s'arrêtera. Divers autres problèmes inattendus se produiront également. Si le programme s'arrête, vous ne pouvez que redémarrer le programme et continuer à le récupérer, je l'optimiserai lentement plus tard si vous en avez besoin.


Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer