Skip to content

Crawler : Extraction des données brutes sur les entreprises

ashfack edited this page Jan 6, 2017 · 5 revisions

Référence à la classe Java : Extractor.java (dans le BackEnd)

Etude des méthodes d'extraction et de l'utilisation

Nous avions d'abord envisagé d'utiliser l'API Google Search Engine : API Google

Or, cette API a ses limites : For CSE users, the API provides 100 search queries per day for free. If you need more, you may sign up for billing in the API Console. Additional requests cost $5 per 1000 queries, up to 10k queries per day.

Autrement dit, 100 requêtes gratuites par jour.

Estimation de l'utilisation de l'outil

En supposant que les clients terminaux seront une vingtaine d'usagers, travaillant 5j/7 et effectuant en moyenne 10 recherches par jour (même entreprise ou non), on arrive déjà à devoir souscrire à une option payante. C'est pourquoi nous avons recherché une solution alternative et sommes arrivés au Web Scraping.

Précision sur le code

La méthode extract de la classe prend en paramètre le nom d'une entreprise et retourne une ArrayList d'Articles. (Chacun ayant pour attributs (title, link, description)). Via la librairie Gson nous pourrons donc à loisir utiliser la sortie comme des JavaBeans ou comme un objet Json.

Nous en avons fait un WebService pour plus de portabilité et compatibilité avec l'architecture du projet. Docu WebService To-do et limites :

  • Le Web Scraping peut être considéré par le moteur de recherche (Google ou autre) comme un robot et peut donc être banni car on utilise les ressources sans directement payer.

  • Le web scraping est sujet à certaines règles de structure html, autrement dit, si demain les courtes descriptions ne sont plus dans une 'div' avec la classe 'description' l'outil ne fonctionnerait pas.

  • Un fichier de configuration sera établi afin de paramétrer le moteur de recherche et/ou élargissement aux tweets, augmenter le nombre de résultats (actuellement 10)...

  • Des biais inhérents à la recherche existent (ex : Une recherche portant sur Orange sur Google conduit a des résultats sur les fruits, ...) une solution serait que lors de la recherche on rajoute 'manuellement' le mot entreprise mais cela peut tout de même conduire à du bruit.

  • Enfin, actuellement, nous ne récupérons que le titre, le lien et la courte description du moteur de recherche pour chaque lien (pas l'article) et il nous faudrait donc trouver une solution gratuite et automatique à cet effet.

  • Updates du 06-01-17

  1. Les articles sont également récupérés grâce à l'aide de la librairie BoilerPipe (des erreurs d'extraction peuvent néanmoins survenir car tous les sites d'informations n'ont pas une structure plus ou moins homogène et l'outil repose sur une heuristique). ! Important ! Nous avons récupéré le code source et modifié puis refait un jar (ce dernier n'est donc pas géré par maven) et il faudra donc l'ajouter manuellement... Ce processus conduit du coup à une multiplication du temps de traitement par 4, équivalent ainsi à un temps d'exécution de l'ordre de 7-8s.

  2. Pour améliorer la pertinence de la recherche, on a une base de secteurs d'activités des entreprises du CAC40 ici.

Clone this wiki locally