Comment puis-je obtenir le code source d'une URL à partir d'une servlet?
Je veux lire un code source HTML (balises) d'une URL donnée de ma servlet.
Par exemple, l'URL est http://www.google.com et ma servlet besoin de lire le code source HTML. Pourquoi j'ai besoin c'est, de mon application web va lire les autres pages web et obtenir le contenu utile et faire quelque chose avec elle.
Permet de dire, mon application affiche une liste des magasins d'une catégorie dans une ville. Comment cette liste est générée est mon application web (servlet) passe par une page web qui est de l'affichage de divers magasins et de lire le contenu. Avec le code source de ma servlet filtres de source et d'obtenir des informations utiles. Enfin crée la liste (parce que ma servlet n'a pas accès à l'URL du web, applications de base de données).
Aucun savoir n'importe quelle solution? (spécialement j'ai besoin de ce faire dans les servlets) Si vous pensez qu'il y a une meilleure façon d'obtenir des informations à partir d'un autre site, s'il vous plaît laissez-moi savoir.
Merci
OriginalL'auteur Débora | 2011-08-21
Vous devez vous connecter pour publier un commentaire.
Ce que vous essayez de faire est appelée web grattage. Kayak et des sites similaires la faire. Ne rechercher sur le web 😉 Bien en java, vous pouvez le faire.
réponse vous donnera complète du contenu HTML retourné par cette URL.
OriginalL'auteur Srinivas
Vous n'avez pas besoin de servlet pour lire des données à partir d'un serveur distant. Vous pouvez simplement utiliser java.net.URL ou java.net.URLConnection classe de lire à distance le contenu à partir du serveur HTTP. Par exemple,
OriginalL'auteur Andrey Adamovich
Prendre un coup d'oeil à jsoup de l'extraction et de l'analyse du HTML.
OriginalL'auteur Jeremy
Comme écrit ci-dessus, vous n'avez pas besoin de servlet pour ce but. Servlet API est utilisée pour réagir aux demandes, conteneur de servlet s'exécute sur le serveur. Si je vous comprends bien, vous n'avez pas besoin de n'importe quel serveur à cet effet. Vous avez juste besoin de simple client http émulateur. J'espère que l'exemple suivant vous aidera à:
OriginalL'auteur hsestupin
Il existe plusieurs solutions.
Le plus simple est l'utilisation d'expressions régulières. Si vous souhaitez uniquement extraire les liens d'étiquettes comme des
<a href="THE URL">
utilisateur expression régulière comme<a\s+href\s*=\s*["']?(.*?)["']\s*/>
. Le groupe(1) contient l'URL. Maintenant, il suffit de créer Matcher et itérer sur votre document tout enmatcher.find()
est vrai.La solution suivante est à l'aide d'analyseur XML parser HTML. Cela fonctionne bien si vous avez des sites sont écrits à l'aide de bien formaté en HTML (XHTML). Car il n'est pas toujours vrai, cette solution est applicable pour les sites sélectionnés uniquement.
La prochaine solution est d'utiliser le java intégré dans l'analyseur HTML: http://java.sun.com/products/jfc/tsc/articles/bookmarks/
La prochaine, la plus souple est moyen est d'utiliser le "vrai" analyseur html et mieux encore, java, navigateur HTML: Analyse HTML de Java
Maintenant, il dépend des détails de votre tâche. Si l'analyse de statique d'ancrage des balises est assez, user d'expressions régulières. Si pas de choisir l'un des moyens suivants.
OriginalL'auteur AlexR
Que les gens ont dit, vous pouvez utiliser des classes de base de java.net.URL et java.net.URLConnection pour récupérer des pages web.
Mais le plus utile pour cet objectif, c'est Apache HttpClient. Recherchez les docs & exemples ici: http://hc.apache.org/
OriginalL'auteur umbr