2017-03-29 1 views
2

Je tente d'enregistrer tous les mots lisibles sur une page Web dans un document texte tout en ignorant le balisage HTML. En utilisant JSoup pour analyser tous les mots sur une page Web, ma seule estimation de la façon de séparer les mots réels du code est à travers les éléments.Comment enregistrer un document jsoup en tant que fichier texte

Est-il possible de convertir plusieurs éléments du document jsoup dans un fichier texte?

i.e. .:

 Elements titles = doc.select("title"); 
     Elements paragraphs = doc.select("p"); 
     Elements links = doc.select("a[href]"); 
     Elements smallText = doc.select("a"); 

sauver Actuellement, l'analyse syntaxique comme document:

Document doc = Jsoup.connect("https:// (enter a url)").get(); 
+0

Il suffit de créer un fichier et d'écrire dessus ??? – Dummy

+0

désolé, je suis nouveau à Java et j'essaie toujours de comprendre les choses. Pouvez-vous me montrer un exemple de code ou une référence qui peut m'apprendre comment faire? – ary

+0

Voici le meilleur endroit pour en savoir plus sur Java IO et nouvelles API IO https://docs.oracle.com/javase/tutorial/essential/io/ – Dummy

Répondre

1

Sa façon simple

Document doc = Jsoup.connect("https:// (enter a url)").get(); 
     BufferedWriter writer = null; 
     try 
     { 
      writer = new BufferedWriter(new FileWriter("d://test.txt")); 
      writer.write(doc.toString()); 

     } 
     catch (IOException e) 
     { 
     } 
+0

Merci! J'ai testé cela et ça fonctionne. Comment est-ce que je sauverais seulement certains éléments à cet auteur de dossier cependant? L'exemple est dans le message principal maintenant. – ary

+0

Vous voulez donc tout enregistrer un par un dans le fichier? – soorapadman

+0

J'essaye d'enregistrer tous les mots lisibles sur une page Web dans un document de texte tout en ignorant le balisage de HTML. c'est à ça que servent les éléments, pour ne sélectionner que des mots lisibles. – ary

-1

Ajout réponse parce que je ne peux pas commenter ci-dessus. Remplacer writer.write(doc.toString()); par writer.write(doc.select("html").text()); dans le code ci-dessus.

Il vous donnera le texte sur la page.

Au lieu de "html" dans doc.select("**html**").text() d'autres étiquettes peuvent être utilisées pour extraire le texte inclus dans ces étiquettes.

Edit: vous pouvez également utiliser writer.write(doc.body().text());

+0

cela a seulement enregistré un fichier texte vide quand je l'ai essayé. – ary

+0

cela l'analyse avec tout le balisage html cependant; il n'exclut pas les étiquettes jointes .. comment puis-je seulement extraire des mots réels? – ary

+0

L'utilisation de 'doc.select (" html "). ToString()' retournera l'élément web sous forme de chaîne, ici les balises ne seront pas exclues. Je suggère '' html "' tag car c'est la balise racine dans le document html (page wep). Si 'doc.select (" html "). Text()' ne fonctionne pas pour vous (il devrait cependant) essayez 'doc.body(). Text()' –

-1

Après avoir écrit dans le texte avec writer.write(doc.text()); la ligne suivante vous devez écrire writer.close(); cela va résoudre le problème.

+0

S'il vous plaît suggérer comme une modification sur l'autre réponse au lieu d'ajouter le commentaire comme une nouvelle réponse. – andrewdotn