2012-06-09 3 views
1

J'essaie de faire un peu d'analyse HTML. Je traite des données très dynamiques, et mes sources varient considérablement. Si pour être plus précis, je suis en train d'analyser les informations produit, y compris nom, prix et description des pages que je ne connais pas à l'avance.parse html basé sur la distance entre deux éléments

Tout au long de ces pages, la seule information de base reste la même est le titre de la page le nom de l'article que j'interroge (ils se correspondent tous les deux) et le prix. La seule vraie logique qui reste la même sur différents sites est la proximité entre les différents ensembles d'informations. Ainsi, une étiquette de prix sera proche du nom du produit et proche de sa description.

Je suis à la recherche d'un analyseur html qui me donnera la possibilité d'affiner mon analyse en fonction de la distance en pixels entre les différentes balises html.

Connaissez-vous une telle bibliothèque? Existe-t-il un autre moyen d'aborder ce problème?

EDIT:

La langue, l'os et la résolution ne Metter. Quels outils connaissez-vous qui pourraient aider à résoudre ce problème? Je pourrais décider de changer mon sous-système d'exploitation et ma langue si je trouve une bibliothèque assez bonne.

+2

Donc, vous ne voulez pas analyser HTML, vous voulez analyser une "page web rendue", n'est-ce pas? Ma question est alors: quel système d'exploitation, quel navigateur, quel affichage et quelle résolution? –

+1

Combien de sources avez-vous? Est-il faisable de définir manuellement les noms de classe/id des éléments qui contiennent l'information que vous voulez? –

+0

Bonne question, Supposons que l'utilisateur entre la résolution en tant que paramètre. Et en ce qui concerne le système d'exploitation, windows \ mac, ne me correspond pas vraiment – vondip

Répondre

1

Le prix d'un article est normalement précédée par un caractère spécial particulier indiquant la monnaie dans la même étiquette que les chiffres affichant la valeur dans un exemple:

<div class="product_value">£ 10.99</div> 
<div class="product_value">¥ 10.99</div> 
<div class="product_value">$ 10.99</div> 

En supposant que vous utilisez une API de recherche tel que google ou bing pour obtenir une liste de pages qui contiennent un nom de produit spécifique puis en ouvrant cette page en haut une simple expression regex sera capable de récupérer tout entre le marqueur de devise (£, $, ¥ etc) et la fin de div ou span.

Toutefois, si les résultats de recherche font apparaître des pages contenant plus d'un produit ou plusieurs marqueurs de prix, ce système ne fonctionnera peut-être pas aussi bien que prévu. La seule façon d'être sûr est de coder des routines individuelles de grattoir pour chaque site ou essayer de gratter quelqu'un d'autre service de comparaison.