java - parse - jsoup ubuntu




Comment "scanner" un site web(ou une page) pour obtenir des infos et l'intégrer dans mon programme? (7)

Eh bien, je suis en train d'essayer de trouver comment extraire des informations d'une page Web, et de l'intégrer dans mon programme (en Java).

Par exemple, si je connais la page exacte à partir de laquelle je souhaite obtenir des informations, par souci de simplicité une page d'article Best Buy, comment puis-je obtenir les informations appropriées dont j'ai besoin? Comme le titre, le prix, la description?

Quel serait ce processus même appelé? Je n'ai aucune idée de commencer à faire des recherches.

Edit: Ok, je cours un test pour le JSoup (celui posté par BalusC), mais je reçois toujours cette erreur:

Exception in thread "main" java.lang.NoSuchMethodError: java.util.LinkedList.peekFirst()Ljava/lang/Object;
at org.jsoup.parser.TokenQueue.consumeWord(TokenQueue.java:209)
at org.jsoup.parser.Parser.parseStartTag(Parser.java:117)
at org.jsoup.parser.Parser.parse(Parser.java:76)
at org.jsoup.parser.Parser.parse(Parser.java:51)
at org.jsoup.Jsoup.parse(Jsoup.java:28)
at org.jsoup.Jsoup.parse(Jsoup.java:56)
at test.main(test.java:12)

J'ai Apache Commons


Ceci est appelé grattage d'écran, wikipedia a cet article sur le raclage web plus spécifique. Cela peut être un défi majeur, car il y a un peu de laideur, de désordre, de code HTML brisé, si ce n'est pas pour le navigateur, alors bonne chance.


J'utiliserais JTidy - c'est simlar à JSoup, mais je ne connais pas bien JSoup. JTidy gère le code HTML défectueux et renvoie un document w3c. Vous pouvez donc l'utiliser comme source pour XSLT afin d'extraire le contenu qui vous intéresse vraiment. Si vous ne connaissez pas XSLT, vous pouvez aussi bien utiliser JSoup, que le document. le modèle est plus agréable à travailler que W3C.

EDIT: Un coup d'oeil rapide sur le site JSoup montre que JSoup peut en effet être le meilleur choix. Il semble soutenir les sélecteurs CSS sur la boîte pour extraire des choses du document. Cela peut être beaucoup plus facile de travailler avec que d'entrer dans XSLT.


Le processus lui-même est normalement appelé "grattage". Vous pouvez utiliser un analyseur comme TagSoup pour traiter la page une fois que vous l'avez récupérée.


Regardez dans la bibliothèque cURL. Je ne l'ai jamais utilisé en Java, mais je suis sûr qu'il doit y avoir des liaisons pour cela. Fondamentalement, ce que vous ferez est d'envoyer une requête cURL à n'importe quelle page que vous voulez «gratter». La requête retournera une chaîne avec le code source à la page. De là, vous utiliserez regex pour analyser toutes les données que vous voulez du code source. C'est généralement comme ça que vous allez le faire.


Vous pouvez aussi essayer jARVEST .

Il est basé sur un JRuby DSL sur un moteur Java pur vers des sites web de spider-scrape-transformer.

Exemple :

Trouver tous les liens à l'intérieur d'une page Web ( wget et xpath sont des constructions de la langue de jARVEST):

wget | xpath('//a/@href')

Dans un programme Java:

Jarvest jarvest = new Jarvest();
  String[] results = jarvest.exec(
    "wget | xpath('//a/@href')", //robot! 
    "http://www.google.com" //inputs
  );
  for (String s : results){
    System.out.println(s);
  }

Vous pouvez utiliser un analyseur html (beaucoup de liens utiles ici: java html parser ).

Le processus s'appelle «saisir le contenu du site Web». Rechercher 'grab site content java' pour plus invertigation.








jsoup