mardi 6 octobre 2015

Web Scraping is Beautiful




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 est amenée à 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 sur Hackdemics des tutoriels conséquents sur le sujet, ainsi que ceux que j'ai partagés dernièrement sur SSL/TLS et SMTP.

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


Python V3.4

Je sais que Fred sera réticent, c'est normal, chacun a leurs préférences, personnellement j'utilise le module sur le moment. 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 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 tdlextract afin que vous perceviez leurs utilisations au sein d'un programme.


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



Code:

# -*- 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 #####

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'))

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]))


def ExtractHTML():
    url = input("Entrer l'URL du Website :")
    req = urllib.request.Request(url)
    resp = urllib.request.urlopen(req)
    respData = resp.read()
    print(respData)


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,...): ")
    paragraphs = re.findall(r'<' + balise + '>(.*?)</' + balise + '>',str(respData))
    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


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 fichier texte, les fichiers prouvant la puissance du scraping devant des obstacles.

En espérant cela vous a plu.


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1OWu7TS
via IFTTT

Aucun commentaire:

Enregistrer un commentaire