Skip to content
Snippets Groups Projects
Verified Commit 15dd51f3 authored by Théo Pirkl's avatar Théo Pirkl :nail_care:
Browse files

Finishes first draft of chapter one. Starts chapter two draft.

parent 51083c37
Branches
No related tags found
No related merge requests found
rapport/figs/redmonk-lang-q120.png

122 KiB

@online{alison_10_nodate,
title = {The 10 Easiest Programming Languages to Learn},
author = {in Alison, DeNisco Rayome},
journaltitle = {TechRepublic},
url = {https://www.techrepublic.com/article/the-10-easiest-programming-languages-to-learn/},
urldate = {2020-03-07},
abstract = {Want to learn a new coding language but don't know where to start? Here are 10 options for those looking to learn to program.},
file = {/Users/theo.pirkl/Zotero/storage/GMGDU3K7/the-10-easiest-programming-languages-to-learn.html},
langid = {english},
note = {Library Catalog: www.techrepublic.com}
}
@online{bode_court_2019,
title = {Court {{Rules That}} ‘{{Scraping}}’ {{Public Website Data Isn}}’t {{Hacking}} - {{VICE}}},
author = {Bode, Karl},
......@@ -64,6 +76,20 @@ In its fifth year, Data Never Sleeps shows exactly how much data is created ever
note = {Library Catalog: blog.xenit.eu}
}
@online{ogrady_redmonk_2020,
title = {The {{RedMonk Programming Language Rankings}}: {{January}} 2020},
shorttitle = {The {{RedMonk Programming Language Rankings}}},
author = {O'Grady, Stephen},
date = {2020-02-28T14:02:10+00:00},
journaltitle = {tecosystems},
url = {https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/},
urldate = {2020-03-07},
abstract = {This iteration of the RedMonk Programming Language Rankings is brought to you by MongoDB. No matter the language, MongoDB helps developers solve their hardest data problems. Build better, bigger, and faster with MongoDB Cloud. With the new year well underway, it’s time to drop our first quarter bi-annual Programming Language rankings. As always, these are},
file = {/Users/theo.pirkl/Zotero/storage/AD59JZ5Z/language-rankings-1-20.html},
langid = {american},
note = {Library Catalog: redmonk.com}
}
@online{rummler_facebook_nodate,
title = {Facebook Sues Mobile Analytics Company for Scraping User Data},
author = {Rummler, Orion},
......@@ -111,6 +137,20 @@ In its fifth year, Data Never Sleeps shows exactly how much data is created ever
note = {Library Catalog: www.octoparse.com}
}
@incollection{williams_hackers_2002,
title = {A Hacker's Odyssey},
booktitle = {Free as in {{Freedom}}: {{Richard Stallman}} and the {{Free}}: {{Richard Stallman}}'s {{Crusade}} for {{Free Software}}},
author = {Williams, Sam},
date = {2002-03},
publisher = {{"O'Reilly Media, Inc."}},
abstract = {Free as in Freedom interweaves biographical snapshots of GNU project founder Richard Stallman with the political, social and economic history of the free software movement. It examines Stallman's unique personality and how that personality has been at turns a driving force and a drawback in terms of the movement's overall success. Free as in Freedom examines one man's 20-year attempt to codify and communicate the ethics of 1970s era "hacking" culture in such a way that later generations might easily share and build upon the knowledge of their computing forebears. The book documents Stallman's personal evolution from teenage misfit to prescient adult hacker to political leader and examines how that evolution has shaped the free software movement. Like Alan Greenspan in the financial sector, Richard Stallman has assumed the role of tribal elder within the hacking community, a community that bills itself as anarchic and averse to central leadership or authority. How did this paradox come about? Free as in Freedom provides an answer. It also looks at how the latest twists and turns in the software marketplace have diminished Stallman's leadership role in some areas while augmenting it in others. Finally, Free as in Freedom examines both Stallman and the free software movement from historical viewpoint. Will future generations see Stallman as a genius or crackpot? The answer to that question depends partly on which side of the free software debate the reader currently stands and partly upon the reader's own outlook for the future. 100 years from now, when terms such as "computer," "operating system" and perhaps even "software" itself seem hopelessly quaint, will Richard Stallman's particular vision of freedom still resonate, or will it have taken its place alongside other utopian concepts on the 'ash-heap of history?'},
eprint = {ou2fOwhqAD8C},
eprinttype = {googlebooks},
isbn = {978-0-596-00287-9},
keywords = {Computers / Information Technology,Computers / Information Theory,Computers / Operating Systems / Linux,Computers / Programming / General,Computers / Social Aspects,Social Science / General,Technology & Engineering / Social Aspects},
langid = {english}
}
@online{zetter_is_2010,
title = {Is {{Breaking CAPTCHA}} a {{Crime}}? | {{WIRED}}},
author = {Zetter, Kim},
......
......@@ -6,6 +6,7 @@
\begin{tabular}{ p{3cm} p{9cm} }
\multicolumn{1}{l}{URL01} & \multicolumn{1}{l}{\url{https://www.domo.com/learn/data-never-sleeps-5}}\\
\multicolumn{1}{l}{URL02} & \multicolumn{1}{l}{\url{https://anti-captcha.com/}} \\
\multicolumn{1}{l}{URL03} & \multicolumn{1}{l}{\url{https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/}} \\
\end{tabular}
\listoftables
......
......@@ -110,9 +110,9 @@ Cette technique permet d'éviter d'être bloqué du service; de cette façon il
bande passante de son service. Il y a un problème de _fair play_ en utilisant ce genre de logiciel.
On peut aussi noter l'utilisation de service de résolution de captcha, dont nous parlions plus haut; outre l'aspect amoral de sous-payer des travailleurs
dans des pays dont la plupart sont en difficulté, l'aspect légal de contourner une protection est tout à fait douteux. C'est toutefois un sujet à
controverse; l'avocate Jennifer Granick dit, en parlant des captchas :
> "Technologically and legally CAPTCHAs can be thought of as nothing more than a speed bump as opposed to a barrier"
("Techniquement et légalement, les captchas peuvent être concus comme qu'un dos d'âne et non comme une barrière") [@zetter_is_2010].
controverse; l'avocate Jennifer Granick dit, en parlant des captchas : _"Technologically and legally CAPTCHAs can be thought of as
nothing more than a speed bump as opposed to a barrier"_ ("Techniquement et légalement, les captchas peuvent être concus comme qu'un dos d'âne et non
comme une barrière") [@zetter_is_2010].
Certains systèmes particulièrement perfectionnés sont mêmes capables de simuler un comportement humain [@zetter_is_2010].
Employer des techniques douteuses n'est pas puni par la loi, mais est socialement inacceptable; si une entreprise dépendant de sa renomée utilisait de
......@@ -129,5 +129,11 @@ Le choix d'un logiciel de scraping n'est pas évident; il demande une réflexion
Peu importe la solution choisie, une vigilance accrue doit être prise; respecter les règles, quelles qu'elles soient, est indispensable. Les services de
scraping étant de façon générale mal vus par les entreprises, elles n'ont pas hésité (et n'hésiteront pas) à saisir la justice pour faire arrêter le scraping [@rummler_facebook_nodate] [@schaal_ryanair_2018] de leur site.
Les frameworks ne sont pas parfaits : leur principal désavantage est leur compléxité variable, les rendant impraticables pour les usagers n'étant pas familiers avec la programmation ou l'informatique en général. Toutefois, ils permettent un contrôle accru de la récupération des données, ce qui permet
d'éviter les problèmes cités plus haut.
\pagebreak
\ No newline at end of file
Une solution, qui en l'occurence est la solution que nous allons adopter ici, est la création d'un framework permettant de simplifier l'utilisation d'un
système de scraping. De cette façon, un utilisateur lambda averti serait en mesure de récupérer des informations de n'importe quel site rapidement.
Nous allons donc étudier la conception d'un tel système et ce qu'il implique.
\pagebreak
\ No newline at end of file
# Méthodologie
Je décris ici ma façon de faire.
Ce chapitre parle en détail de la conception du (+framework_g) NScrap. Nous commencerons par parler en détail de l'architecture, en commencant par le langage de programmation choisi, des structures observables dans ce projet; nous continuerons en parlant des structures de données implémentées, pour enfin parler de la communication du projet.
Une fois la partie architecture réalisée, nous décrirons la réalisation de ce projet, en donnant deux exemples de systèmes de scraping implémentés dans ce projet.
## Langages, design patterns, structures
## Architecture du projet
Une description de type *Génie Logiciel* du projet.
L'infrastructure de ce projet a été pensée pour être flexible. En effet, la récupération de données par (+scraping_g) peut être catastrophiquement longue.
En proposant une architecture flexible, les pannes sont tolérables et n'impacteront qu'une fraction du projet. De cette façon, il est tout de même possible
de récupérer dans la majorité des cas une partie des informations scrapées. Cela est particulièrement utile sur les scraping de très longue durée.
En plus d'être flexible, le but final de NScrap est d'éviter au maximum à l'utilisateur de devoir programmer. Le système proposera des _modules_, capables chacun d'effectuer une activité précise; l'utilisateur pourra ensuite les lier pour créer son programme à la carte; il pourra donc par exemple indiquer de télécharger des données spécifiques du site X, qui sont téléchargées au format XLSX (Excel); les convertir ensuite dans un format facilement lisible comme le format (+CSV_a) pour enfin supprimer les anciens fichiers Excel.
## Modèles de données
Les modules ne sont, du point de vue de l'utilisateur, que des boîtes noires [^7]. L'utilisateur rentre un certain nombre de paramètre, et un fichier sort du module. Il n'a de cette façon pas besoin de se préoccuper de la partie programmation.
[^7]: En vérité, il ne s'agit pas véritablement de boîtes noires comme l'entendrait par exemple Stallman [@williams_hackers_2002]. L'utilisateur serait tout à fait en mesure d'aller voir comment fonctionne le module et le modifier s'il le souhaitait.
### Langage de programmation
Le langage choisi pour ce projet a été Python. Python est un langage particulièrement populaire, et ce pour deux raisons : sa facilité de lecture et sa capacité à effectuer des tâches complexes (ce malgré sa simplicité).
\cimg{figs/redmonk-lang-q120.png}{scale=.30}{Classement des langages de programmation en 2020 - les plus populaires se situent en haut à droite}
Python est considéré comme le second langage recommandé à apprendre après le HTML [@alison_10_nodate]; c'est donc le premier langage de programmation polyvalent recommandé aux débutants. Il est tellement populaire qu'il est choisi quasiment systématiquement dans les projets de recherche dans l'(+IA_a).
En outre, des centaines de milliers de paquets Python existent déjà, rendant la tâche d'interconnecter NScrap à un système extrêmement facile dans bien des cas. Au vu de ces faits, Python est un candidat idéal à l'implémentation de ce projet.
### Design pattern
Bli
### Modèles de données
Les différents modèles de données dans l'application (BDD, queues, piles, etc)
### Communication
Bla
## Réalisation
Blou
### Catégorie un : Scrapers simples
Blu
### Catégorie deux : Scrapers complexes
Bloump
\pagebreak
\ No newline at end of file
......@@ -11,4 +11,6 @@
% Ne mettez pas de points à la fin d'une entrée, ils sont mis pour vous !
\newacronym{API_a}{API}{Application Programming Interface}
\newacronym{SAAS_a}{SaaS}{Software As A Service}
\newacronym{RSS_a}{RSS}{Really Simple Syndication}
\ No newline at end of file
\newacronym{RSS_a}{RSS}{Really Simple Syndication}
\newacronym{IA_a}{IA}{Intelligence Artificielle}
\newacronym{CSV_a}{CSV}{Comma Separated Value}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment