2017-10-10 7 views
0

J'ai un fichier appelé BBC_news_home.html J'ai besoin de supprimer tous les balises de balises afin que tout ce que je suis parti avec est juste du texte. Jusqu'à présent, je suis arrivé:Python - supprimer les balises de marquage et lire le code HTML à partir du fichier?

def clean_html(html): 
    cleaned = '' 

line = html 

pattern = r'(<.*?>)' 

result = re.findall(pattern, line, re.S) 

if result: 
    f = codecs.open("BBC_news_home.html", 'r', 'utf-8') 
    print(f.read()) 
else: 
    print('Not cleaned.') 
return cleaned 

J'ai vérifié avec regex101.com que le modèle est correct Im pas sûr comment imprimer la sortie pour vérifier si les balises sont partis?

+0

Vous voulez probablement regarder dans [BeautifulSoup] (https://www.crummy.com/software/BeautifulSoup/bs4/doc/), plus précisément [.get_text()] (https: //www.crummy. com/logiciel/BeautifulSoup/bs4/doc/# get-text). –

Répondre

0

Vous devriez vraiment utiliser BeautifulSoup pour cela. Faites pip3 install BeautifulSoup4 ou pip install BeautifulSoup4 en fonction de la version de Python dont vous avez besoin. J'ai déjà posté une réponse à une question similaire here. Pour être complet:

from bs4 import BeautifulSoup 

def cleanme(html): 
    soup = BeautifulSoup(html) # create a new bs4 object from the html data loaded 
    for script in soup(["script"]): 
     script.extract() 
    text = soup.get_text() 
    return text 
testhtml = "<!DOCTYPE HTML>\n<head>\n<title>THIS IS AN EXAMPLE </title><style>.call {font-family:Arial;}</style><script>getit</script><body>I need this text captured<h1>And this</h1></body>" 

cleaned = cleanme(testhtml) 
print (cleaned) 

Et la sortie sera simplement I need this text captured And this pour le résultat.