Link to truncated version of example documentEviter une lecture fuite d'espace un document HTML avec HXT
J'essaie d'extraire le gros morceau de texte dans le dernier « pré », le processus, et le sortir. Aux fins de l'argumentation, disons que je veux appliquer
concatMap (unwords . take 62 . drop 11) . lines
au texte et le sortir.
Cela prend plus de 400M d'espace sur un document html 4M quand je le fais.
Le code que j'ai est assez simple, donc je ne l'inclue pas de peur de biaiser les réponses.
Voici une itération du code:
file = readDocument [(a_validate, v_0), (a_parse_html, v_1)] "Cache entry information.xhtml"
text = fmap last $ runX $
file >>>
deep (hasName "pre") />
isText >>>
-- changeText (unwords . take 62 . drop 11 . lines) >>>
getText
Je pense que le problème est que la façon dont je le fais, HXT essaie de garder tout le texte dans la mémoire comme il le lit. Selon this , il semble que HXT doit au moins lire tout le document, mais pas le stocker en mémoire.
Je vais essayer d'autres parseurs, HaXmL, étant le prochain.
N.B. I ont résolu le problème initial par traitement du fichier d'entrée sous forme de texte et la partie souhaitée délimitée par une "<pre>00000000:"
et "</pre></body>\n</html>"
Voulez-vous dire ByteString? Je n'avais pas entendu parler de BitString jusqu'à ce que vous le mentionniez, et il semble que ce soit spécialisé quand je m'intéresse à des bits individuels. –
Oui ... Vous avez raison. – fuz
C'était la première chose que j'essayais, même avant de passer à HXT. Cela n'a pas aidé du tout. le problème était avec l'analyse réelle. –