Blog d'un Éternel Geek

Le Scraping c'est Beautiful

http://vivageek.com/data/images/codge/beautiful.png

 

 

Le webScraping est le "grattage Web (où Web récolte donnée Internet de l'extraction) est une technique de logiciel informatique de l'extraction d'informations à partir de sites web".

 

Lorsque nous cherchons un bug, identifier sur un système une partie qui ne sera pas conforme au bon fonctionnement des logiciels qui tourne dessus, nous sommes amenées à récolter et à analyser des données. L'HTML analysé est facile en Python, en particulier avec l'aide de la bibliothèque Beautiful Soup.


On a beaucoup d'autres librairies possibles pour ce type de pratique. J'ai voulu partager ce programme qui n'est pas optimisé au maximum de ses capacités, attention, je ne traite pas encore de tout. Je partagerai bientôt d'autres programmes travaillés en C++ et python voire même Perl qui nous permettra de travailler sur les couches réseaux. Mais chaque chose en son temps. Vous avez vu mes derniers articles traitant le sujet des réseaux, SSL/TLS et SMTP.

 

Le langage est une des extensions de la communication, entendons nous elle n'en est pas la base puisque à l'ère préhistorique on communiqué à l'aide d'objet ou de fresques.

 

On a grandement évolué et à l'ère du web 5.0, nous parlons à travers des algorithmes et des langages informatiques dits de haut niveau.

 

L'avantage de python reste sa portabilité et sa simplicité de mise en œuvre. Au travers de modules simple, nous allons infirmer cette hypothèse.

 


Modules à installer, Dépendances :
tldextract
Beautiful Soup 4
Requests


Python V3.4

$ pip install requests

 $ pip install beautifulsoup4

 


Mais Beautiful a cette chance d'avoir depuis 2004 été de sauver par les programmeurs.


Beautiful Soup se trouve au sommet des analyseurs Python comme lxml et html5lib, vous permettant d'essayer différentes stratégies d'analyse. On apprécie sa flexibilité et surtout sa librairie présentant de nombreuses fonctions facilement utilisables.

Ce que j'essaie de montrer est qu'avec des connaissances minimes l'on peut facilement établir des petits programmes afin de réaliser des techniques simples. Le code suivant a été réalisé en 2h de temps, je n'ai donc pas traité les erreurs (except), ni chercher à optimiser certaines parties, ni à extraire sur un fichier, mais surtout à créer rapidement un script utilisant Beautiful, request et dlextract afin que vous perceviez leurs utilisations au sein d'un programme.

 

Quelle est Belle ma soupe?

 

Beautiful Soup fournit quelques méthodes simples et idiomes pythoniques pour naviguer, la recherche et la modification d'un arbre d'analyse: une boîte à outils pour disséquer un document et extraire ce dont vous avez besoin. Il ne prend pas beaucoup de code à écrire une application.

 

Beautiful Soup convertit automatiquement les documents entrants et sortants à Unicode documents en UTF-8.

 

Il vous suffit de spécifier l'encodage d'origine.

 

Beautiful Soup se trouve au sommet d'analyseurs de Python populaires comme lxml et html5lib, vous permettant d'essayer différentes stratégies d'analyse ou la vitesse commerciale pour souplesse.

 
Extraction de données source de la communication moderne

 

On est dans une génération qui a besoin d'identité, de voler les données et non pas les acquérir. Regardez la série Mr Robot, il est un peu le robin des bois moderne, il ne se contente pas d'être un acteur de son temps, il prend ce dont il a besoin au moyen du langage informatique.

 

Est-ce que la technologie serait la solution pour unir les générations ?

 

Cela se pourrait lorsque l'on aperçoit l'ancienne génération et la nouvelle utilisée chacun à sa façon cette technologie qui bientôt les dépassera.

 

Un programme qui va extraire l'information

 

L'information est une des composantes de la communication. Le message contient cette information qui va être véhiculée entre deux individus ou machines. La recherche de l'information est ce qui va être le sujet de cet article.


Si ces modules vous intéressent, ils peuvent être étendus plus sur un spectre d'action plus large que le mien.

Code:
#----------------------------------------------------------------
# Name:       Scraping URL
# Purpose:     Extract URL avec différentes techniques
#
# Author:     DM && Helios
#
# Created:     06/10/2015
# Copyright:   (c) DMH 2015
# Licence:     Free
#---------------------------------------------------------------
 # -*- coding: cp1252 -*-
 # -*- coding: UTF-8 -*-
 ##### Modules import #####
 from bs4 import BeautifulSoup
import requests
import urllib.request
import re
import tldextract
import os
 ##### Mise en place des Fonctions #####
##### Utilisation de Beautiful afin de Parser une URL, simple et efficace #####
def Scraping():
   url = input ("Entrer a website à Parser (www.site.com): ")
   r = requests.get("http://" +url)
   data = r.text
   soup = BeautifulSoup(data, "html.parser")
   for link in soup.find_all('a'):
       print(link.get('href'))
 ##### Utilisation de tldextract et quelques unes de ces fonctions de bases, rapide et précise #####
def Extract():
   Extract = input ("Entrer l'url d'un site à extraire : ")
   Ext = tldextract.extract(Extract)
   print (Ext, Ext.subdomain, Ext.domain, Ext.suffix, Ext.registered_domain, '.'.join(Ext[:2]))
 ##### Request une star dans les modules tout comme urllib #####
def ExtractHTML():
   url = input("Entrer l'URL du Website :")
   req = urllib.request.Request(url)
   resp = urllib.request.urlopen(req)
   respData = resp.read()
   print(respData)
 ##### On reprend les même sauf que l'on va préciser l'extraction de la page #####
def ExtractOnly():
   url = input("Entrer l'URL du Website :")
   req = urllib.request.Request(url)
   resp = urllib.request.urlopen(req)
   respData = resp.read()
   balise = input ("Entrer les balises à extraire (p,a,...): ")
   balises = re.findall(r'<' + balise + '>(.*?)</' + balise + '>',str(respData)) # Tapez p pour récupéré ce qui se situe entre les balises p
   print (paragraphs)
 def menu():
   os.system("clear")
   print ("###################################################")
   print ("#               Scraping Website                #")
   print ("#               Scrap & Extract                 #")
   print ("#               -----------------                 #")
   print ("#               DreAmuS/HelioS                   #")
   print ("###################################################")
   print ("")
   print (" [+] 1 - Scraping les Liens d'un website")
   print (" [+] 2 - Extraire les Noms de Domaines")
   print (" [+] 3 - Extraire HTML")
   print (" [+] 4 - Extraire une partie de l'URL")
   print (" [+] 5 - Quitter")
   print ("-------------------------------------------------)
   choix = int(input("Tapez Votre Choix >>> "))
   if (choix == 1):
       Scraping()
       menu()
   elif (choix ==2):
       Extract()
       menu()
   elif (choix == 3):
       ExtractHTML()
       menu()
   elif (choix == 4):
       ExtractOnly()
       menu()
   elif (choix == 5):
       quit
   else:
       menu()
 if __name__=="__main__":
   menu()

1 - Scraping les Liens d'un website : On va scraper les liens en rapport avec le NDD
2 - Extraire les Noms de Domaines : On va extraire les NDD en rapport
3 - Extraire HTML : On va extraire l'url de la page demandé
4 - Extraire une partie de l'URL : On va extraire une partie spécifique (exemple: on met l'url d'une page et p qui scrapera que ce qu'il y a entre <p> et </p>)
5 - Quitter : On quitte le programme qui reviens en boucle

 

Conclusion

 

Ainsi, vous verrez qu'il est possible d'utiliser cette première ébauche pour rajouter des modules et fonctions afin de par exemple comme l'avait à l'époque cet anglais en scrapant l'intégralité des fichiers d'une prison, en tâtonnant et en précisant son script sur les bonnes balises. Il avait ainsi sans avoir besoin de voir la page, enregistrer sous un fichier texte les fiches de tous les détenus, prouvant ainsi la puissance du Scraping devant des obstacles.



Python et le module lxml permettent également de récupérer les données d'un site. Je souhaitais utiliser d'autres voies afin de vous montrer le potentiel de Python. Le Scraping peut être utilisé pour tous types d'action sur le web.

 

Mais ce qui est fondamental et que j'ai voulu démontrer au travers de ce script, c'est que l'information, le message, le langage et la communication sont intimement liés. Le web permet de relier au travers de l'informatique ses différentes composantes de l'être humain.

 

Le langage informatique est bien le langage du 22e siècle de l'humain.

 


En espérant cela vous a plu, merci de m'avoir lu et à bientôt

 

Source






 Geek me     Je suis un Geek dans l'âme. 18 ans à silloner internet pour récolter des informations afin de comprendre son fonctionnement. Idéalement j'étudie également le comportement humain.

C'est afin de vous partager mes connaissances que j'ai ouvert ce blog alors je vous souhaite une bonne lecture.



À lire également


Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée.

Quelle est la troisième lettre du mot tpasc ? :