Vous êtes sur la page 1sur 28

RAPPORT DE STAGE D’IMMERSION EN ENTREPRISE

Réalisé par : Farhat Hiba


Encadré par : Ben Abdallah Alya

Société d’accueil : Traveltodo


Remerciements

Je tiens tout d’abord à remercier M. Loussaief Firas, de m’avoir choisi et


accueilli comme stagiaire au sein de son département.
Je tiens à remercier vivement mon maitre de stage Mme. Ben Abdallah
Alya, Responsable Régionale Produit & Revenue Manager, pour ses conseils
avisés et la confiance qu’il m’a accordée tout au long de mon stage.
Je remercie également toute l'équipe Marketing pour leur accueil, leur
esprit d'équipe j’ai eu l’occasion d’être associé à votre travail et d’acquérir de
nouvelles connaissances et compétences.
Mes sincères gratitudes à tout le personnel de Traveltodo pour les
conditions favorables et l’ambiance de travail agréable créées au sein de leur
société.
Table des matières

Introduction générale ........................................................................................ 1


Chapitre 1 : Présentation du cadre du stage ...................................................... 2
1. Présentation de la société ...................................................................... 2
1.1 Identité de l’entreprise : ...................................................................... 3
1.2 Présentation des différents services de l’entreprise : .................... 3
2. Etude de l’existant : .............................................................................. 4
2.1 Description de l'existant :.................................................................... 4
2.2 Critique de l’existant........................................................................... 5
2.3 Solution proposé ................................................................................. 5
Chapitre 2 : Etat de l’art.................................................................................... 7
1. Scraping web ........................................................................................ 7
1.1. Définition ...................................................................................... 7
1.2 Applications du scraping .................................................................... 7
1.3 Fonctionnement du Web Scraping : ................................................... 8
2. web Scraping avec Python ........................................................................ 8
3. Légalité de web scraping .......................................................................... 9
4. Les libraires et Framework utilisées ....................................................... 10
Chapitre 3 : Spécification des besoins ............................................................ 12
1. Spécification des besoins .................................................................... 12
1.1 Besoins fonctionnels : ....................................................................... 12
1.2 Besoins non fonctionnels .................................................................. 12
2. Environnement logiciel....................................................................... 12
2.1 Anaconda (distribution Python) :...................................................... 13
2.2 Jupyter............................................................................................... 13
2.3 NetBeans ........................................................................................... 13
2.4 Scene Builder .................................................................................... 13
Chapitre 4 : Les tâches effectués et mise en place de la solution ................... 14
1. Tâches effectuées :.............................................................................. 14
2. Présentation de Plateforme RESABO : .............................................. 14
3. Mise en place de la solution de scraping : .......................................... 15
3.1. Importation des librairies : .......................................................... 15
3.2. Utilisation de selenium webdriver............................................... 15
3.3. Remplissage de formulaire .......................................................... 15
3.4. Parcourir liste des hôtels ............................................................. 16
3.5. Extraction des données ................................................................ 17
3.6 Enregistrement des données dans un fichier Excel : ................... 19
4. Mise en place de l’interface graphique :............................................. 21
4.1 Liaison code JavaFX avec Python : ............................................ 22
Conclusion générale........................................................................................ 23
Liste des figures

Figure 1 : Logo Traveltodo............................................................................ 2


Figure 2 : Organigramme de la société ......................................................... 3
Figure 3 : Logo de TunisieBooking .............................................................. 5
Figure 4 : Fichier robots.txt de TunisieBooking ........................................ 10
Figure 5 : Page d'accueil de la plateforme RESABO ................................ 14
Figure 6 : Aperçu sur le fichier Excel final ................................................... 20
Figure 7 : Interface d'accueil de l'application ................................................ 21
Figure 8 : interface de lancement veille ......................................................... 21
Figure 9: Aperçu du code JavaFX ................................................................. 22
Introduction générale

Le tourisme représente une des forces majeures d’attractivité des territoires et, par conséquent, un
puissant levier de leur développement économique. C’est également un secteur où les technologies
de l’information et de la communication (TIC) jouent un rôle déterminant. Les usages numériques
se multiplient et suscitent de nouvelles pratiques, de nouveaux besoins et de nouveaux modes de
consommation.

Le tourisme est en effet l’une des filières qui a été la plus fortement impactée par l’évolution des
outils, des usages et des contenus numériques. On distingue aujourd’hui le e-tourisme, le m-
tourisme et le tourisme social.

Aujourd'hui, ce sont près de huit touristes sur dix qui préparent leurs vacances sur Internet, et un
sur trois qui reste derrière son écran pour acheter son séjour. Face à l'évolution numérique, les
professionnels du tourisme n'ont pas d'autres choix que de s'adapter.

Pour rester compétitifs, les acteurs du tourisme se doivent donc d’adopter une attitude proactive
vis-à-vis du numérique. Ils doivent intéresser, satisfaire, pour donner l’envie aux touristes de
promouvoir leur destination, c’est pour ça les agences de voyages faisaient régulièrement une
analyse des compétiteurs pour permettre d'identifier leurs forces, leurs faiblesses et d'anticiper des
menaces qui pèsent sur leurs marchés

La veille concurrentielle peut se définir comme la recherche, la collecte et l’analyse de diverses


données issues du web concernant l’activité des autres entreprises présentes sur le même marché.

C’est dans ce contexte que s’inscrit, essentiellement, notre projet intitulé


« Grattage web de site web et automatisation de la veille concurrentiel »
Tout au long de ce rapport, nous allons exposer les différentes étapes de réalisation de notre projet
qui sera divisé en quatre chapitres :
Le premier chapitre « Présentation du cadre de stage » est un chapitre introductif dans lequel
nous effectuerons une brève description de la société. Ensuite, nous exposerons le cadre général du
projet et la solution proposée.
Pour le deuxième chapitre nommé « Etat de l’art » nous allons citer les termes théoriques
indispensables à comprendre dans notre projet.
Dans le troisième chapitre « Spécifications des besoins », qui sera consacré pour une profonde
analyse afin de mieux cerner les besoins de Traveltodo.

Pour le dernier chapitre, « Les tâches effectués et mise en place de la solution » Nous allons citer
les tâches qui m’ont été accordés tout a long du stage ainsi. Nous détaillerons le développement de
la solution ainsi que les étapes à suivre.
Enfin, nous achèveront par une conclusion générale, qui accorde une évaluation de notre travail et
qui offre des perspectives mettant fin à notre rapport de stage.
1
Chapitre 1 : Présentation du cadre du stage

Introduction
Ce chapitre se focalise sur la présentation de l’entreprise accueillante et l’étude détaillée de
l’existant où nous cernons la problématique de notre sujet et nous présenterons la solution adoptée
pour ce dernier.

1. Présentation de la société
La société Traveltodo est placée la première agence de voyage totalement basée sur internet visant
la satisfaction des besoins en voyage des tunisiens. Cette dernière est agréée par l’office national
du tourisme.
L’agence électronique propose des offres à des prix alléchants, tout comme elle met dans l’étalage
une panoplie d’offres perpétuelles de 800 prestataires du tourisme local à savoir hôtels, restaurants,
centres de remise en forme, agences d’excursion, Clubmed (qui sont des villages à l’étranger),
Omra. Tout ceci à des tarifs discount.
Comme elle a établi de nombreux partenariats internationaux fructueux, pour les voyages à
l’étranger, où il est devenu possible de réserver directement et payer en ligne, un hôtel, un séjour

Traveltodo a aussi pensé aux entreprises, où, un espace qui est totalement sécurisé et personnalisé
leur est destiné ; il offre des fonctionnalités bien développées, aux professionnels.
Traveltodo possède actuellement 30 agences réparties sur tout le territoire tunisien.
L’agence de voyage, une propriété du groupe des héritiers du groupe Jalel Bouricha (PDG du
groupe) et dirigé par Monsieur Tarek Laasaadi (Directeur général de Traveltodo), qui est aussi un
actionnaire de l’entreprise, persiste à vouloir tailler sa part du lion du marché et ne cesse d’innover
et de diversifier son offre. En 2014, l’agence a défini un nouveau concept en lançant sa propre
marque hôtelière intitulée Traveltodo village.
L’hôtel Africa Jade à Korba était le premier établissement commercial immiscé dans la chaîne
Traveltodo village.
L’entreprise n’arrête pas d’élargir son éventail de produits, où en Mai 2020, l’agence de voyage
Traveltodo lance son site de location et de réservation de logements de particuliers Airbnb 10
intitulé Traveltodo Houses ». L’agence met à la disposition de ses clients qui cherchent un
logement meublé pour passer leurs vacances, des appartements, villas studios ; Gîtes ruraux,
maisons d’hôtes.

Figure 1 : Logo Traveltodo

2
1.1 Identité de l’entreprise :
Raison sociale : Traveltodo
Directeur Général : Tarek Lassadi
Adresse du siège : Zone industrielle Charguia II- 2035
Gouvernorat : Tunis Carthage
Forme juridique : Société Anonyme (SA)
Date de création : 2004
Type d’activité : Prestation De service, l’agence TRAVELTODO est spécialisée dans la
réservation et vente sur Internet des séjours touristiques et hôteliers ainsi que des produits de
loisirs.
Fournisseurs : Les Hôtels, les prestataires du tourisme, Telecom, Sodexo, Ooredoo.
Clients : les agences de voyage et les personnes qui souhaitent passer un séjour hôtelier ou
touristique (en Tunisie et à l’étranger)
Nombre d’effectifs : 98 (siège + les agences) dont 27 (que dans le siège) => (Réseau de points de
ventes : 30 agences réparties sur tout le territoire tunisien)
Produits :
-Volet local : Séjours, soirées, Traveltodo Houses, Traveltodo Ticket. Traveltodo Village (Africa
Jade Hôtel à Korba) ; Traveltodo Artisanat.

1.2 Présentation des différents services de l’entreprise :


Traveltodo se décompose en des différents services afin d’assurer le bon déroulement du travail.

Figure 2 : Organigramme de la société

3
a. Département marketing :
Puisque l’internet a le vent en poupe ces dernières années, Traveltodo assure une présence
électronique totale. L’agence de voyage dispose d’un service marketing qui joue un rôle très
important dans la société.
Le département marketing est formé de 6 personnes qui sont chargées de l’élaboration de la
stratégie marketing digital, de la gestion et modération des réseaux sociaux, de la réalisation des
campagnes promotionnels (affichage urbain, Spot télé, Spot radio…) ; de la communication
(Communication Offline et On-line), ainsi du pilotage des actions de marketing opérationnel. Tout
comme il s’occupe de l’entretien du site web et l’organisation des événements.

b. Département RH :
Ce département est composé d’une responsable des ressources humaines, elle s’occupe du
processus du recrutement des nouveaux employés, la préparation des contrats et la gestion des
dossiers du personnel tels que : les congés, le pointage, l’absence, les avances, les primes, les
dossiers de CNSS, l’élaboration du plan de la formation…

c. Département ventes :
Ce département est composé d’une responsable ventes, son assistante et les chefs d’agences. Une
panoplie de missions relatives à ce service, à savoir :
*analyser les données liées à la satisfaction client et mettre en œuvre les actions correctives et
préventives adéquates.
*effectuer un rapport d’activité mensuel à la direction de ventes.
*avoir la force de proposition pour élaborer des notes de service.

d. Département comptabilité et Finance :


Ce service est géré par les deux responsables : Chef comptable et le Directeur administratif
financier. Ce département est chargé de la comptabilité de l’entreprise. Il s’occupe de
l’établissement des bilans comptables, les factures, les relations avec les fournisseurs, la
préparation des bons de commande, le règlement des dossiers fournisseurs

2. Etude de l’existant :

L'étude de l'existant est une étape importante dans la mise en pratique de tout projet informatique.
Cela explique l'environnement d'exploitation et décrit le contenu principal de notre projet.

2.1 Description de l'existant :


Les systèmes d'information jouent un rôle essentiel dans le succès des organisations en assurant
des opérations efficaces et une gestion efficace pour maintenir son avantage parmi les différents
concurrents.
L'analyse concurrentielle est, depuis longtemps, un morceau important de la recherche en
marketing. En procédant à ce type d'exercice, les entreprises se mettent à jour par rapport aux
4
meilleures pratiques de l'industrie et sont ainsi en mesure de voir s'il y a des initiatives qu'elles
devraient entreprendre afin d'atteindre plus efficacement leurs objectifs.

Le concurrent direct de Traveltodo: (Top of mind)

Le principal concurrent de TRAVELTODO : Tunisie booking est une marque de la société Spring
Travel Services qui a été fondée en 2004 par Mr. Khaled Rojbi où la plateforme
TunisieBooking.com a été mise en ligne au profit des français. Elle a lancé sa première agence en
France, mais elle s’est affronté à une panoplie de difficultés, vu que les frais de communication
sont élevés, l’e-marketing aussi. Il faut noter aussi qu’elle est face à des concurrents tels que
booking.com, Expedia… En 2012, au mois de Mars, Tunisie booking débarque en Tunisie avec sa
première agence. Elle s’est concentrée sur les Hôtels en Tunisie, et par la suite elle a développé le
volet de l'e Ticket et la billetterie. Tunisie booking est connu par son service de qualité qui est
irréprochable selon ses clients satisfaits.

Figure 3 : Logo de TunisieBooking

2.2 Critique de l’existant


Le moyen le plus simple d'élaborer un tableau de suivi concurrentiel est d'utiliser Excel ou bien un
tableur collaboratif comme Google Sheets pour permettre à tous les acteurs de la veille
concurrentielle d'ajouter ou de modifier des données. Des modèles de grilles de veille
concurrentielle sont proposés en ligne pour disposer des bases d'un tableau de bord performant.

L'élaboration d'un tableau de bord est une démarche adaptée pour une veille concurrentielle
basique avec relativement peu de données à traiter.et comme la saisie de ce tableau est statique il
devient un sujet de risque de fautes, perte de temps et d'énergie, et comme cette tâche est répétitive
et pénible.
En revanche, le choix d'un outil plus performant répond mieux au besoin de traiter de gros
volumes de données.

2.3 Solution proposé

Pour bien mener le projet tout en respectant les engagements contractuels, en tenant compte des
délais et en produisant les résultats escomptés, le projet a été organisé de sorte que le service
marketing peut trouver des informations désirables dans les brefs délais.
5
L'automatisation des tâches qui se faites quotidiennement est une des technologies qui permet
d’augmenter l'efficacité et d'améliorer le service. Pour réaliser notre solution, nous devons utiliser
une méthode fiable et efficace tout en prenant compte des besoins de service.
Cela consiste à collecter les données à partir de sites concurrents pour faciliter ensuite leur
requêtes et manipulations.
Dans cette phase, nous avons alors fait ce qui est appelé communément du "web scraping".
Le web scraping est un terme d’origine anglaise qui signifie littéralement "grattage du web". C’est
une technique qui consiste à lire une page web et détecter les divers éléments qui constituent son
contenu, permettant ainsi de situer et classer les informations qui y sont disponibles.

Conclusion
Ce chapitre représente un point de départ pour effectuer notre projet. Nous avons présenté
l'organisme d'accueil, étudié l'existant et fixé les objectifs à atteindre.
Le chapitre suivant comportera les détails des notions utilisés dans le projet.

6
Chapitre 2 : Etat de l’art

Introduction
Nous allons commencer par une présentation des concepts de base de notre projet, puis une étude
de quelques solutions open source existant dans le marché en vue de les évaluer et choisir les
mieux adaptées à utiliser pour le déroulement de projet.

1. Scraping web

1.1. Définition
Le scraping est une technique informatique permettant d’extraire des textes ou des informations à
partir d’un site web existant. Cette extraction est réalisée par des programmes informatiques (ou
scripts). Les applications du scraping sont nombreuses : veille concurrentielle, réutilisation de
contenus, surveillance des prix des e-commerces concurrents…

1.2 Applications du scraping


Les applications de scraping sont très nombreuses. Nous avons choisi ici de vous en présenter
trois.

Duplicate content et Mashup


L’usage le plus connu du scraping est relatif au “pompage” d’un site web dans le but de recréer des
pages dont le contenu est généré automatiquement à partir de plusieurs sources (mashup) ou
intégralement dupliqué (duplicate content externe). Le but des scrapeurs est alors de générer des
milliers de pages automatiquement afin d’obtenir du trafic par le biais du référencement naturel.
On parle alors de technique SEO blackhat, cette pratique étant formellement condamnée et
sanctionnée (lorsqu’elle est détectée) par les principaux moteurs de recherche du marché.

Surveillance automatisée des prix des concurrents


Une des applications les moins connues du scraping consiste à surveiller, dans le cas d’un
commerce en ligne, les prix des concurrents. Un logiciel va alors repérer dans la page où se situe
l’information tarifaire et va alerter l’utilisateur en cas de variation. D’autres solutions plus
évoluées sont également capables de fournir un tableau de prix récapitulatif des concurrents, et de
les comparer à ses propres tarifs afin de définir une politique tarifaire adaptée.

Veille concurrentielle
Dans le cas de sites non marchands, il peut être utile de surveiller les sites web de ses concurrents,
par exemple en paramétrant une alerte en cas de changements effectués sur certaines pages de leur
site web. En surveillant les modifications de la page descriptive des fonctionnalités d’un logiciel
concurrent, on pourra savoir quand et comment ce dernier a fait évoluer son offre.

7
1.3 Fonctionnement du Web Scraping :
Le scraping comprend différentes fonctionnalités, mais on opère généralement une distinction
entre le scraping manuel et automatique. Le scraping manuel désigne le fait de copier et insérer
manuellement des informations et des données. On peut le comparer avec le fait de découper et
assembler des articles de journaux. Le scraping manuel est uniquement effectué lorsque l’on
souhaite trouver et enregistrer des informations de façon sporadique. Il s’agit d’un processus très
laborieux qui est rarement appliqué pour de grandes quantités de données.

Dans le cas du scraping automatique, on utilise un logiciel ou un algorithme qui explore plusieurs
sites Internet afin d’extraire des informations. Un logiciel spécifique est utilisé en fonction de la
nature du site Internet et du contenu. Dans le scraping automatique, on distingue différentes
méthodes :

Les analyseurs syntaxiques : un analyseur syntaxique est utilisé pour convertir le texte en une
nouvelle structure. Dans le cas de l’analyse d'un HTML par exemple, le logiciel lit le document
HTML et enregistre les informations. L’analyse d’un DOM utilise l’affichage des contenus dans le
navigateur côté client pour extraire les données.

Les robots : un robot est un logiciel réalisant des tâches spécifiques et les automatisant. Dans le
Web harvesting, les robots sont utilisés pour explorer automatiquement des sites Internet et
collecter des données.

Le texte : les personnes sachant utiliser la Command Line peuvent utiliser les instructions Unix
grep pour explorer le Web à la recherche de certains termes dans Python ou Perl. Il s’agit d’une
méthode très simple pour obtenir des données qui requiert toutefois davantage de travail que
lorsqu’on utilise un logiciel.

2. web Scraping avec Python

Voici une liste des caractéristiques Python qui justifient pourquoi c’est le langage le mieux adapté
pour le web scraping :

Facilité d’utilisation : Python est très simple à coder, vous n’aurez pas à utiliser des points-virgules
à chaque retour de ligne ou bien des accolades à chaque début de condition. La notion
d’indentation permet aussi d’avoir un code propre et lisible.
Large collection de librairies : Python dispose d’une immense collection de librairies comme
Numpy, Matplotlib, Pandas etc ... Chose qui permet de fournir à l’utilisateur plusieurs méthodes et
services pour différentes raisons. En plus, il vous sera très utile dans le traitement des données
extraites du site.

Langage non typé : l’une des qualités de Python est que vous ne devez pas définir les types des
variables. Vous pouvez les utiliser directement quand vous souhaitez. Cette pratique permet de
gagner du temps.

8
Syntaxe facilement compréhensible : La syntaxe de Python est facilement compréhensible vu
qu’elle est très similaire à la langue anglaise. La notion d’indentation facilite aussi la tâche vu
qu’elle permet de séparer les blocs du code.
Moins de code, plus d’efficacité : le web scraping a pour but de vous faire gagner du temps ! mais
on ne veut pas écrire de longs programmes qui vont consommer le temps gagné ! Heureusement
qu’en Python, de petits programmes exécutent des tâches immenses.

Communauté : Supposons que vous avez rencontré une difficulté ou une erreur lors de la
programmation ? Pas besoin de vous affoler. Python a l’une des plus grandes communautés actives
dans le monde de la programmation ou vous pouvez poser toutes vos questions et avoir des
réponses convaincantes à ses dernières.

3. Légalité de web scraping

Quand on parle de Web Scraping, une question importante se pose : est-ce une pratique légale ou
pas ? Quelques sites permettent le web scraping contrairement à d’autres. Cette information peut
être recueillie du fichier robots.txt du site. Dans notre cas, nous voulons scraper le site web de
TunisieBooking alors pour voir son fichier robots.txt il suffit de taper l’URL suivante :
https://www.tn.tunisiebooking.com.com/robots.txt

9
Figure 4 : Fichier robots.txt de TunisieBooking

4. Les libraires et Framework utilisées

Comme nous le savons, Python a plusieurs applications et dispose de différentes librairies pour
différents usages. Dans notre projet, nous allons utiliser les librairies suivantes :

Urllib : C’est un package qui contient plusieurs modules pour traiter les requêtes en relation avec
les URL ...

Pandas : Pandas est une librairie utilisée pour la manipulation et l’analyse des données. Elle est
utilisée pour extraire les données ou bien les stocker dans le format recherché.

Selenium : c’est un Framework de test informatique développé en Java mais offre des passerelles
pour s'exécuter avec différents langages comme Python et PHP.
Il permet d'interagir avec différents navigateurs web tels que Google Chrome grâce au
chromedriver ou Mozilla Firefox avec Gecko de même que le ferait un utilisateur de l'application.
Il entre ainsi dans la catégorie des outils de test dynamique (à l'inverse des tests statiques qui ne
nécessitent pas l'exécution du logiciel) facilitant le test fonctionnel.

10
Ast : Le module ast permet aux applications Python de traiter la grammaire abstraite de l'arbre
syntaxique Python. La grammaire abstraite Python elle-même est susceptible d'être modifiée à
chaque nouvelle version de Python ; ce module permet de trouver à quoi la grammaire actuelle
ressemble.
Un arbre syntaxique abstrait peut être généré en passant l'option ast. PyCF_ONLY_AST à la
fonction native compile (), ou en utilisant la fonction de facilité parse () fournie par le module. Le
résultat est un arbre composé d'objets dont les classes héritent toutes de ast.AST. Un arbre
syntaxique abstrait peut être compilé en code objet Python en utilisant la fonction native compile
().

JavaFX : est un Framework et une bibliothèque d'interface utilisateur issue du projet OpenJFX,
qui permet aux développeurs Java de créer une interface graphique pour des applications de
bureau, des applications internet riches et des applications smartphones et tablettes tactiles.
Créé à l'origine par Sun MicroSystems, puis développé par Oracle après son rachat et ce, jusqu'à la
version 11 du JDK, c'est depuis lors à la communauté OpenJFX que revient la poursuite de son
développement.
Cette bibliothèque a été conçue pour remplacer Swing et AWT, qui ont été développés à partir de
la fin des années 90, pour pallier les défauts de ces derniers et fournir de nouvelles fonctionnalités
(dont le support des écrans tactiles).

Conclusion
Dans ce premier chapitre, nous avons présenté, d’abord, les intérêts des grands concepts de notre
projet et nous avons étudié, les outils qui peuvent nous aider.
Dans le chapitre suivant nous allons citer les besoins de projet et les solutions optées.

11
Chapitre 3 : Spécification des besoins

Introduction
Durant ce chapitre, nous allons identifier les besoins que notre projet doit fournir, nous allons
également décrire l'environnement de réalisation.

1. Spécification des besoins

1.1 Besoins fonctionnels :


Les besoins fonctionnels expriment une action que doit effectuer le système en réponse à une
demande. Il ne devient opérationnel que s'il les satisfait. Dans le cas de notre projet, le travail est
composé de deux parties :

Partie interface utilisateur : Comme la solution est dédiée à des responsables Marketing
l’objectif de projets et de réaliser une application desktop facile à utiliser et à comprendre,
l’utilisateur ne doit rien interagir avec le code.
Pour ce faire, il nous faut une interface graphique et la relier avec notre code python.

Partie web scraping : L'objectif dans cette partie est de mettre en place une solution de scraping
web de site tn.TunisieBooking.com grâce à python. Cette solution doit nous fournir à la fin un
tableau veille concurrentiel qui nous permet d’avoir une visibilité globale et instantané sur les prix
et marges de notre concurrent.

1.2 Besoins non fonctionnels


Afin d’offrir une solution complète et performante à différents niveaux, nos plateformes doivent
couvrir les besoins non fonctionnels suivants :

Facilité d’utilisation : Le système offre une interface simple facile à utiliser en donnant à
l’utilisateur la possibilité d’agir sur les ressources qu’il manipule.

Rapidité : La solution doit nous faire gagner du temps face à la saisie des données manuellement.

Extensibilité : L’application doit être extensible et permet d'ajouter et de supporter d'autres


fonctionnalités et d’intégrer tout type d’autres fonctionnalités.

Performance : une application doit être avant tout performante c'est à dire à travers ses
fonctionnalités, elle répond à toutes les exigences des usagers d’une manière optimale.

2. Environnement logiciel

Pour permettre de mieux calibrer les solutions, les produits choisis, sont jugés selon leurs
simplification, pour ce fait on va citer brièvement les solutions retenues dans cette section ainsi
que leur mode de fonctionnement.
12
2.1 Anaconda (distribution Python) :
Anaconda est une distribution libre et open source des langages de programmation Python et R
appliqué au développement d'applications dédiées à la science des données et à l'apprentissage
automatique (traitement de données à grande échelle, analyse prédictive, calcul scientifique), qui
vise à simplifier la gestion des paquets et de déploiement. Les versions de paquetage sont gérées
par le système de gestion de paquets conda. La distribution Anaconda est utilisée par plus de 6
millions d'utilisateurs et comprend plus de 250 paquets populaires en science des données adaptés
pour Windows, Linux et MacOS.

2.2 Jupyter
Jupyter est une application web utilisée pour programmer dans plus de 40 langages de
programmation. C'est un projet communautaire dont l'objectif est de développer des logiciels
libres, des formats ouverts et des services pour l'informatique interactive. Jupyter est une évolution
du projet IPython. Jupyter permet de réaliser des calepins ou notebooks, c'est-à-dire des
programmes contenant à la fois du texte en markdown et du code en Julia, Python, R... Ces
calepins sont utilisés en science des données pour explorer et analyser des données.

2.3 NetBeans
C’est un environnement de développement intégré (EDI), placé en open source par Sun en juin
2000 sous licence (Common Development and Distribution License) et GPLv2. En plus de Java,
NetBeans permet la prise en charge native de divers langages tels le C, le C++, le JavaScript, le
XML, le Groovy, le PHP et le HTML, ou d'autres (dont Python et Ruby) par l'ajout de greffons. Il
offre toutes les facilités d'un IDE moderne (éditeur avec coloration syntaxique, projets multi-
langage, refactoring, éditeur graphique d'interfaces et de pages Web).

Compilé en Java, NetBeans est disponible sous Windows, Linux, Solaris (sur x86 et SPARC), Mac
OS X ou sous une version indépendante des systèmes d'exploitation (requérant une machine
virtuelle Java). Un environnement Java Development Kit JDK est requis pour les développements
en Java.

2.4 Scene Builder


C’est un outil interactif de conception d'interface graphique pour JavaFX. Créé par Oracle, il
permet de construire rapidement des interfaces utilisateurs sans avoir besoin de (savoir) coder.

Le logiciel est décliné en deux versions : l'une (8.x) destiné à JavaFX 8 et l'autre (9.0 et +) pour
JavaFX 9 et plus.

Conclusion
Dans ce chapitre, nous avons capturé les besoins fonctionnels de notre projet, nous avons par la
suite exposé notre environnement de travail. Dans le chapitre qui suit, nous allons expliquer la
mise en place de la solution.

13
Chapitre 4 : Les tâches effectués et mise en place de la solution

Introduction
Dans le cadre de ce stage, j’ai eu l’occasion d’intégrer l’équipe du marketing.
Une équipe qui est composée de 6 personnes.
Dans cette section, nous allons évoquer en profondeur les missions qui m’ont été confiées tout au
long de ce stage ainsi que ma participation à des activités et qui m’ont permises de me familiariser
avec l’univers du marketing et d’affiner mes connaissances pour les déployer dans notre domaine.

1. Tâches effectuées :

- Réaliser une veille concurrentielle


- Contrôle de saisie.
- Contrôle des différentes transactions qui se font sur la plateforme e-réceptif.
- Contrôle de disponibilité des hôtels.
- Vérifications des tarifs contrats.

2. Présentation de Plateforme RESABO :

La majorité des taches sont liés à cette plateforme c’est une véritable innovation sur le marché du
tourisme et des voyages en Tunisie dans la mesure où ils disposent de la plus grosse panoplie de
produits aux meilleurs prix du marché avec la technologie la plus avancée, sans parler d’un help
desk et d’un service SAV disponibles 24h/24, 7 jours /7 qui caractérisent leur offre.

Figure 5 : Page d'accueil de la plateforme RESABO

14
3. Mise en place de la solution de scraping :

Comme mentionné dans les chapitres précédents nous allons procéder à automatiser les étapes de
la veille concurrentiels, cela consiste à collecter les données à partir de sites concurrents pour
faciliter ensuite leur requêtes et manipulations.

3.1. Importation des librairies :

3.2. Utilisation de selenium webdriver


C’est l’interface essentielle permettant la simulation d’interactions avec les utilisateurs dans
n’importe quel navigateur (Firefox, Chrome, Edge, Safari ou Internet Explorer). Depuis 2018,
l’API est un standard W3C officiel.
Dans notre cas nous allons utiliser chromedriver puis l’envoyer le lien de site :

3.3. Remplissage de formulaire


Comme la montre la figure ci-dessous les champs obligatoires de formulaire sont : la destination,
date départ, date arrivée, nombre de chambres.

15
3.4. Parcourir liste des hôtels
Une liste des hôtels par région va être affiché donc nous allons stocker les liens des hôtels un par
un dans une liste pour les parcourir après.

Dans les régions à plusieurs hôtels le site affiche quelques-uns puis pour afficher d’autre offre il
faut cliquer sur un bouton.

16
Maintenant il nous faut une boucle pour accéder aux hôtels un par un pour pouvoir extraire leurs
données une fois l’hôtel est affiché il faut tester le statut du bouton « Tarifs & Dispo » pour le
cliqué.

3.5. Extraction des données


Le tableau de veille consiste à regrouper : nom d’hôtel, prix d’achat, prix de vente et marge.
Pour ce faire il faut stocker les données nécessaires pour chaque hôtel dans une liste pour l’afficher
en suite la figure de code contient des commentaires qui expliquent mieux chaque ligne.

17
Une fois la page suivante est affiché un formulaire doit être remplie, ainsi il faut choisir l’agence
puis cliquer sur le bouton « Continuez

18
Maintenant la page finale s’affiche elle contient le prix d’achat donc nous devons le récupérer
et l’ajouter à la liste puis calculer la marge

3.6 Enregistrement des données dans un fichier Excel :


Le but de la solution est de fournir un fichier Excel prêt comme nous le faisons manuellement
pour que l’équipe marketing pourra l’exploiter et le modifier pour ce faire il fallait de structurer les
données de manière qu’ils soient lisibles et disposées correctement dans le fichier de sortie.
Finalement nous auront cet output au niveau de Jupyter :

19
Et voici le fichier Excel final :

Figure 6 : Aperçu sur le fichier Excel final

20
4. Mise en place de l’interface graphique :
Comme la solution est dédiée à des responsables Marketing l’objectif de projets et de réaliser une
application desktop facile à utiliser et à comprendre, l’utilisateur ne doit rien interagir avec le code.
Pour ce faire, nous avons créé des interfaces FXML avec JavaFX et nous avons relier ce code java
avec python.
Ci-dessous les figures de l’interface graphique :

Figure 7 : Interface d'accueil de l'application

Après le clic sur le bouton de Tableau de veille, une nouvelle fenêtre va s’apparaitre pour
remplir les données nécessaires à utiliser dans le code python, qui sont la destination, date départ,
date arrivée et nom de fichier, une fois l’utilisateur click sur le bouton Lancer le navigateur web va
être affiché et l’opération commence à s’exécuter.

Figure 8 : interface de lancement veille

21
4.1 Liaison code JavaFX avec Python :
Comme mentionné dans la section précédente, l’utilisateur ne doit pas toucher le code.
Dans notre application l'exécution se fait grâce à l'une des méthodes exec() de la classe
Runtime. La classe Runtime est une classe singleton, dont on obtient l'instance unique par un appel
de la méthode de classe getRuntime(). Une fois que nous avons fait appel au fichier nous utilisons
la classe abstraite InputStream qui est la super classe de toutes les classes représentant un flux
d'octets d'entrée.
La dernière étape c’est de lire le contenu de fichier, Java fournit plusieurs mécanismes pour
pour le faire. Le package java.io. * contient la classe BufferedReader nous offre cette
fonctionnalité. En général, chaque demande de lecture entraîne la création d’une demande de
lecture correspondante du caractère sous-jacent ou du flux d’octets. Une utilisation typique
impliquerait de transmettre le chemin du fichier au BufferedReader, cela charge notre fichier dans
l’objet « reader ». Après nous devons parcourir le contenu du fichier et l’afficher.

Ci-dessous un aperçu de code :

Figure 9: Aperçu du code JavaFX

22
Conclusion générale

Ce présent rapport a été élaboré pour la validation de stage d’immersion en entreprise. Notre
projet est réalisé à Traveltodo et qui consiste à Grattage web de site web d’un concurrent et
automatisation de la veille concurrentielle.
L’objectif de notre travail est faciliter une tache qui se fait manuellement quotidiennement et
aider le département produit auquel j’ai effectué mon stage de gagner plus de temps.
Notre rapport de fin d’études s’est articulé en quatre chapitres.
Dans le premier chapitre, nous avons présenté l’organisme d’accueil, le contexte de notre
projet ainsi que l’étude et la critique de l’existant dans Traveltodo.
Par la suite, nous avons annoncé la solution sur laquelle notre projet s’est basé.
Dans le deuxième chapitre, nous avons élaboré une analyse profonde afin de mieux cerner les
besoins de Traveltodo. Au cours de ce chapitre, nous avons présenté les outils utilisés.
Dans le troisième chapitre, nous avons présenté les spécifications des besoins. Au cours de ce
chapitre nous avons commencé par une capture des besoins fonctionnels et non fonctionnels.
Et pour le dernier chapitre, nous avons clôturé par la description du code développé.
De point de vue technique, ce stage m’a aidé à approfondir mess connaissances en Data
science et de mettre dans ce projet mes acquis théoriques que j’ai appris durant mes années
d’études.
En plus, cette expérience m’a permis de découvrir et de se familiariser avec l’environnement
professionnel et nous a offert la possibilité de collaborer à l’égard du secteur de Tourisme et
approfondir nos connaissances.

En termes de perspectives, notre projet pourrait être amélioré en ajoutant la veille de


Traveltodo pour une meilleure visibilité.

23

Vous aimerez peut-être aussi