ERG::datagrab

Source (url) http://curlybraces.be/wiki/index.php/ERG::datagrab
Site satellite Curlybraces
Date 2018-10-08 10:33:44

De {}

Aller à : navigation, rechercher

Sommaire[modifier]

Data grab[modifier]

Session du 24/09/2018[modifier]

Objectif[modifier]

À partir de la page wikipédia Liste de écoles d'art en Belgique. Sur base des écoles d'art à Bruxelles construire un générateur de page wiki d'école d'art.

Étapes[modifier]

"Enregistrer sous", "Page web, complète" en HTML

Pour ça on a besoin de javascript dans la page HTML que l'on va ouvrir à la fin. Javascript permet de faire une requête Ajax pour utiliser un programme en Python. C'est ce programme qui va faire tout le boulot, il va chercher dans le dossier les pages HTML que l'on a téléchargées, les analyser pour trouver seulement le texte de description (pas les balises, ni les titres ou les listes par exemple). Ensuite grâce à javascript ce programme va afficher le résultat dans une page HTML. À chaque fois que l'on ouvre le fichier HTML, une page aléatoire est générée à partir de la base de données que l'on a fourni au départ.
1datagrab 24 09 18.png

Sélectionner les blocs de textes de description. Il faut une bibliothèque pour que Python puisse analyser (parser) le contenu de la page HTML. On télécharge et on installe Beautiful Soup. Dans un éditeur de texte (comme Notepad++) on essaye d'ouvrir une page HTML dans Pyhton grâce cette nouvelle bibliothèque. Problème d'encodage des caractères : le script Beautiful Soup n'arrive pas à lire certains caractères UTF-8 qui sont présents dans la page Wikipédia. En fait le problème venait du terminal qui n'arrive pas à afficher certain caractères, pas de soucis si on les mets juste dans un variable ou si on écris dans un fichier .txt.

Session du 08/09/2018[modifier]

Partie Grab / Côté client[modifier]

Plutôt que de pré-télécharger dans un dossier les pages .html qui servent d'input au script, on utilise urllib: une librairie python qui permet de faire des requêtes http. Cela permet d'encoder une suite d'adresses URL de wiki et le programme va les chercher sur le net et en télécharge le code html. Le script python qui "grab" (va chercher) les datas et les mets dans une variable (ou ici un fichier .txt) est terminé:

import urllib
from bs4 import BeautifulSoup
 
#list of urls we use as source material
 
urls=['https://en.wikipedia.org/wiki/Soup',
      'https://en.wikipedia.org/wiki/Rain']
 
#we request each of those url in a 'htmls' list
htmls=[]
for url in urls:
    html = urllib.urlopen(url)
    htmls.append(html.read())
 
#we create a 'soup' html parser objet for every html page requested
soup=[]
for html in htmls: 
    soup.append(BeautifulSoup(html, 'html.parser'))
 
#we put all the text between the <p> markups of those html in a .txt file
text = []
with open('text.txt', 'w') as f:
    for sp in soup:
        for tag in sp.find_all('p'):
            text.append(tag.get_text())
            f.write(tag.get_text().encode("utf-8"))

Algorythme de génération de texte[modifier]

Communication entre l'algorithme et la partie Grab[modifier]

Pour que l'algorithme de génération de texte en javascript puisse fonctionner, on doit passer le texte grabber en python à une variable du script javascript grâce à Ajax. Notons que le script python n'aurait pas pu être incorporer dans la partie javascript parce que javascript est côté serveur et ne permet donc pas de faire des requêtes pour récupérer les données de pages html sur le net, cette action est obligé de se trouver dans un script côté client.

Fonctionnement de l'algorithme[modifier]

Pour faire un mashup des différents textes extirpés des pages html, on va utiliser un algorithme typique de NLP (Natural Language Processing - le domaine de l'informatique qui s’intéresse à l'analyse et à la synthèse de texte). L'algorithme fonctionne comme ceci:

co -> {'u'}
ou -> {'c',' ','s'}
uc -> {'o'}
u_ -> {'c'}
c' -> {'e'}
...

Récupérée de « http://curlybraces.be/wiki/index.php?title=ERG::datagrab&oldid=2564 »

Dernière modification effectuée le 10 octobre 2018.