Partage
  • Partager sur Facebook
  • Partager sur Twitter

Master spin

    19 août 2019 à 17:20:10

    Bonjour à tous.

    Récemment, j'ai commencé à travailler sur un programme permettant de récupérer un article sur une page web puis de le mettre en forme afin de pouvoir le spiner ensuite. Concrètement, je récupère une page web que l'utilisateur entre, je récupère l'article qu'elle contient, le texte récupéré est mis en forme (avec des {}) afin de pouvoir ensuite aller chercher des mots dans une base de synonymes pour chaque mot (ou expression) du texte.

    Voilà le code que j'utilise:

    # -*-coding:utf-8 -*
    import os
    import requests
    import re
    from bs4 import BeautifulSoup
    
    def visible(element):
        if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
            return False
        elif re.match('<!--.*-->', str(element.encode('utf-8'))):
            return False
        return True
    	
    def recupArticle(URL):
    	"""Récupère le texte d'une page web et le place dans un fichier"""
    	try:
    		requete = requests.get(URL)
    	except:
    		return print("L'adresse choisie n'est pas valide")
    	else:
    		page = requete.content
    		soup = BeautifulSoup(page, features="html.parser")
    
    		data = soup.find_all(text=True)
    		result = filter(visible, data)
    		
    		with open("article.txt", "w", encoding="utf-8") as fichier:
    			for elt in list(result):
    				fichier.write(elt)
    
    def spinTexte():
    	"""Met en forme le texte récupéré afin de le spinner ensuite"""
    	os.chdir("C:/Users/maman/Desktop/Content_spinning")
    	try:
    		monFichier = open("article.txt", "r")
    	except OSError:
    		lien = input("Veuillez entrer un lien: ")
    		recupArticle(lien)
    		monFichier = open("article.txt", "r")
    	finally:
    		contenu = monFichier.read()
    		contenu = re.sub(r"\n", "", contenu)
    		contenu = re.sub(r"\s+", " ", contenu)
    		text = contenu.split(" ")
    		monFichier.close()
    		monFichier = open("article_spin.txt", "w", encoding="utf-8")
    		textSpin = "{"
    		textSpin += "} {".join(text)
    		textSpin += "}"
    		monFichier.write(textSpin)
    		monFichier.close()

    J'ai plusieurs problèmes:

    • Je n'arrive pas à récupérer seulement le texte de l'article automatiquement (en prenant une page Wikipédia par exemple, des petits "modifier le code" viennent s'incruster dans le texte récupéré)
    • Ensuite, les espaces en trop comptent comme des mots quand le texte est spiné et risquent de faire planter le programme
    • Enfin, je ne parviens pas non plus à replacer la ponctuation après les "{}". J'ai essayé avec des regex mais à chaque fois toute ma mise en page disparaissait, ne laissant que le texte brut récupéré de la page web, et bien entendu sans aucune ponctuation

    Auriez-vous des réponses à mes problèmes? J'ai beau chercher, je n'arrive pas à trouver de bonne solution.

    PS: J'ai choisi de placer mes textes dans des fichiers par souci de clarté afin de mieux suivre ce que produisait chacune de mes fonctions. Je suis conscient que j'aurais pu tout regrouper en une fonction principale et ne travailler que sur une string.

    • Partager sur Facebook
    • Partager sur Twitter

    Master spin

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown