2008-11-25 5 views
0
Extraction

pas tous les sites Web expose leurs données bien, avec les flux XML, API, etc.information de sites

Comment pourrais-je aller à l'extraction d'informations à partir d'un site Web? Par exemple:

... 
<div> 
    <div> 
    <span id="important-data">information here</span> 
    </div> 
</div> 
... 

Je viens d'un arrière-plan de programmation et de codage Java avec Apache XMLBeans. Y a-t-il quelque chose de similaire à l'analyse syntaxique HTML, quand je connais la structure et que les données se trouvent entre une balise connue?

Merci

+0

Soyez prudent lorsque vous faites ce genre de chose, surtout si vous avez l'intention de frapper des charges de pages sur le même site et les grattant toutes les données. Cela peut avoir un effet négatif sur la performance de ces sites et n'est pas très amical. – xan

+0

Je suis entièrement d'accord, je ne suis pas intéressé par le grattage, mais il y a des moments où vous devez accéder aux données sur les sites, Remarque, Java n'est pas un must have, juste une note –

Répondre

3

Il y a plusieurs Open Source HTML Parsers là pour Java.

J'ai utilisé JTidy dans le passé, et ont eu de la chance avec elle. Il vous donnera un DOM de la page html, et vous devriez être en mesure d'attraper les balises dont vous avez besoin à partir de là.

4

Here's an article qui a quelques outils de grattage d'écran écrit en Java.

En général, il semble que vous voulez jeter un oeil à regular expressions, qui fait le modèle que vous recherchez.

Espérons que ça aide!

0

Java apparaît comme une contrainte assez difficile pour une telle tâche. Est-ce une exigence difficile? Les langages de script sont idéaux pour construire ce qui est vraiment beaucoup de code du dernier kilomètre.

Si vous êtes ouvert à elle, rubis + hpricot fait que complètement trivial. Vous pouvez utiliser des sélecteurs css ou XPath (ou les deux) pour trouver (et manipuler) le contenu en HTML. Saisir le document, l'analyser et extraire le texte dans votre exemple est littéralement une ligne de code.

Questions connexes