2009-11-23 9 views
1

J'ai une question à propos de l'analyse des pages HTML, spécifiquement des forums, je veux analyser un forum ou un fil contenant certains post-critères, je n'ai pas encore défini l'algorithme , puisque j'ai seulement analysé les formats de texte de structure auparavant, un cas d'utilisation peut être copier et coller chaque thread dans le programme à la main, ou insérer une URL comme http://www.forums.com/forum/showthread.php?t=46875&page=3 et laisser le programme analyser les pagesAnalyse de pages Web

Compte tenu de tout cela, je voudrais savoir:

  1. Est-il possible d'analyser un fil de discussion sur une page HTML?
  2. Quel serait le meilleur/le plus rapide/le plus simple pour ce faire?
  3. Si je préfère Java, quels outils/bibliothèques ai-je besoin pour cela?
  4. Une autre chose que je devrais considérer?
+0

N'y at-il pas un flux RSS ou Atom disponible pour le forum que vous allez analyser? Ce serait la solution la plus simple pour analyser ceci, alors. –

Répondre

0
  1. oui
  2. expressions régulières, toute la saveur.
  3. probablement les w/regex
  4. there are tools out therethat will do this for you.
+0

Je ne voudrais pas tester cette expression régulière! : P –

+1

Correspondance des balises html via regex peut être difficile, voir: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – miku

+0

@myyn - cette réponse est la plus grande réponse SO que j'ai jamais vue. mais si vous pouvez supposer que tout le HTML que vous essayez d'analyser est légitime, il est assez facile de le faire avec w/regex, comme je le fais souvent. bien sûr, c'est une grande hypothèse. – Jason

2

1/oui

2/Utiliser un langage compact comme Python ou Ruby pour le prototypage.

  • Pour python il y a une bibliothèque propre pour l'analyse syntaxique HTML/XML appelé beautifulsoup

  • Ruby, vous pouvez essayer: nokogiri ou hpricot

3/Un outil Java pour considérer : htmlparser

4/Si vous êtes intéressé seulement par un texte particulier ou certains spéciaux classes, une expression régulière peut être suffisante. Mais dès que vous voulez creuser plus profondément dans la structure du contenu, vous aurez besoin d'une sorte de modèle pour contenir vos données, et donc un analyseur, qui, dans le meilleur des cas, peut faire face aux incosistances du monde réel. html

1

Vous voudrez peut-être examiner une sorte de bibliothèque d'analyse HTML, plutôt que d'utiliser des expressions régulières pour le faire. Il ya de très bons parseurs html pour ruby et python, mais un google rapide montre qu'il y a aussi un certain nombre de parseurs pour Java. L'avantage de ces bibliothèques est que vous n'avez pas à gérer tous les cas de bords avec des expressions régulières/ils manipulent mal html (les deux peuvent être impossibles avec les regex, selon ce que vous voulez faire) et ils vous donnent aussi beaucoup façon de traiter les données (par exemple, la belle soupe vous permet de saisir tous les éléments qui appartiennent à une classe spécifique ou d'utiliser un autre sélecteur css pour limiter les éléments de la page que vous voulez traiter). Personnellement, je commencerais, au moins pour commencer, par ruby ​​ou python, car les bibliothèques sont connues et il y a beaucoup d'informations sur leur utilisation dans ce but.Aussi, je trouve plus facile de prototyper rapidement ces types de choses en ruby ​​ou en python que dans le jvm. Vous pouvez même apporter plus tard ce code sur jvm avec jruby ou jython, si cela devient nécessaire.