Extraction du texte de html avec python
votre objectif est d'extraire le texte d'un fichier html en python, reproduisant la sortie que vous obtiendrez en copie le texte d'un solider et en le faisant dans un texte Éditeur.
défis
Les expressions régulières ne sont pas assez robustes pour HTML mal formé. Bien que la belle soupe soit souvent recommandée, elle peut ramasser du contenu indésirable comme JavaScript et ne pas interpréter des entités HTML.
Alternative prometteuse: html2text
Bien qu'il produit de markdown au lieu de texte brut, html2text hentre html entities correctement et ignore javascrip. Cependant, sa documentation et ses exemples sont limités. De BS4 Import BeautifulSoup url = "http://news.bbc.co.uk/2/hi/health/2284783.stm" html = urlopen (url) .read () Soup = BeautifulSoup (HTML, fonctionnalités = "html.parser") # Supprimer les scripts et les styles pour le script dans la soupe (["script", "style"]): script.extract () # Extraire du texte text = soup.get_text () # Convertir les pauses de ligne et supprimer les espaces blancs lignes = (line.strip () pour la ligne dans le texte.splitlines ()) Chunks = (phrase.strip () pour la ligne en lignes pour la phrase en ligne.split ("")) text = '\ n'.join (morceau pour morceau en morceaux si morceau) print (text)
dépendance
Pour utiliser ce code, vous aurez besoin de biensoup4 installé avec:
from urllib.request import urlopen from bs4 import BeautifulSoup url = "http://news.bbc.co.uk/2/hi/health/2284783.stm" html = urlopen(url).read() soup = BeautifulSoup(html, features="html.parser") # Remove scripts and styles for script in soup(["script", "style"]): script.extract() # Extract text text = soup.get_text() # Convert line breaks and remove whitespace lines = (line.strip() for line in text.splitlines()) chunks = (phrase.strip() for line in lines for phrase in line.split(" ")) text = '\n'.join(chunk for chunk in chunks if chunk) print(text)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3