Je souhaite analyser des milliers de fichiers HTML. J'utilise le paquet BeautifulSoup.Plusieurs documents dans un seul fichier HTML
Le problème avec mes documents HTML est qu'ils contiennent des graphiques au format de codage ASCII. Le paquet BeautifulSoup n'est pas capable de supprimer ces caractères.
La bonne chose est qu'il existe une façon d'identifier le segment dans ces documents HTML où Graphics a été stocké. Mais je suis nouveau sur Python et je n'arrive pas à comprendre comment supprimer un tel segment avant d'analyser le document en utilisant BeautifulSoup.
Tous les documents HTML contiennent plusieurs documents comme indiqué ici:
<DOCUMENT>
<TYPE>EX-1
<SEQUENCE>1
<FILENAME>
<DESCRIPTION>
<TEXT>
<html>
.
.
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-2
.
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-3
.
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
.
</DOCUMENT>
Comme indiqué ci-dessus, ce fichier HTML contiennent 4 documents et dernier document dont le type est "graphique" contiennent des graphiques. Je veux supprimer tous ces documents du fichier HTML dont le TYPE est "GRAPHIC". Après la suppression de tous ces graphiques de ce fichier HTML, je prévois d'utiliser le paquet BeautifulSoup pour extraire le texte.
Veuillez m'aider à supprimer ces documents dont le TYPE est GRAPHIQUE.
Voici mon code. Ce code est capable de lire le fichier HTML et d'écrire toute la partie du texte dans un autre fichier. Le problème est que ce code écrit également du contenu graphique.
import os
import time
import traceback
import glob
from bs4 import BeautifulSoup
import html5lib
path = "E:\\"
def extract():
for file in glob.glob(os.path.join(path, '*.html')):
try:
file_name = str(file).split(".txt")[0].replace("E:\\","")
outfile = open(file_name.replace(".html","")+".txt",'w')
htmlfile = open(file,"r")
rfile = "".join(htmlfile.readlines())
htmlfile.close()
rsoup = BeautifulSoup(rfile,'html5lib')
documents = rsoup.find_all('document')
#REMOVE HMTL TAGS AND EXTRACT TEXTUAL CONTENT OF HTML FILE
a = '\n'.join([e.encode("utf-8").replace("\n","").replace("\r","").replace("\s","").replace("\t","").strip() for e in rsoup.recursiveChildGenerator() if isinstance(e,unicode) and e.strip()!=""])
outfile.write(str(a))
outfile.close()
#print a
#SUSPEND EXECUTION FOR 5 SECONDS
time.sleep(5)
except:
print "Status: Parsing Failed"
extract()
Merci
montrez ce que vous avez fait –
Pourquoi voulez-vous supprimer ces sections _avant_ d'utiliser BeautifulSoup? Analysez simplement le fichier avec BeautifulSoup, puis utilisez-le pour supprimer les sections que vous souhaitez supprimer. – abarnert
@abarnert ... J'ai posté mon code ici. Je ne sais pas comment puis-je supprimer un document particulier en fonction de son type. S'il vous plaît aidez-moi quelle commande/fonction que je devrais utiliser. Merci – Ankit