2010-04-20 8 views
0

Je suis chargé d'écrire un programme qui, étant donné un terme de recherche et la source HTML d'une page représentant les résultats de recherche d'un moteur de recherche inconnu (vraiment un blog, un magasin, Google, eBay , ...), a besoin de construire une structure de données des résultats contenant "ce qui est dans les résultats": un titre pour résultat de recherche, le lien "détails", la position dans les résultats, etc On ne sait pas si la page de résultats contient n'importe laquelle des données, et s'il y a des résultats de recherche. Le but est d'alimenter la structure de données en un autre programme qui en extrait le sens. Ce que je cherche n'est pas BeautifulSoup ou un RegExp mais plutôt quelques idées intelligentes ou des algorithmes sur la façon d'interpréter la source HTML. Que dois-je faire pour savoir quelle partie de la page constitue un seul élément de résultat? Comment filtrer le bruit de balisage pour extraire les bits importants? Qu'est-ce que tu ferais? Des pointeurs vers des domaines de recherche couvrant ce que j'essaie de faire sont grandement appréciés.Interprétation des résultats de recherche

Merci, Simon

Répondre

0

je doute qu'il existe un algorithme de solution miracle qui, sans formation va simplement travailler sur une sortie de la requête de recherche arbitraire.

Cependant, cette tâche peut être résolue et est actuellement résolue dans de nombreuses applications, mais avec une approche différente. Vous devez d'abord définir la structure générale d'un élément de résultat de recherche unique en fonction de ce que vous allez en faire (nom, date, lien, extrait de description, etc.), puis écrire le nombre d'analyseurs html qui extrairont champs nécessaires à partir de la sortie des résultats de recherche de sites Web particuliers.

Je sais que ce n'est pas une solution super sexy, mais c'est probablement la seule qui fonctionne. Et ce n'est pas une science de fusée. Rédaction de parseurs est en fait extrêmement simple, vous pouvez en faire des dizaines par jour. Si vous regardez dans la source html du résultat de recherche, vous remarquerez que les résultats de sortie sont généralement très structurés et marqués avec div sections ou classe atributes, il est donc très facile de le trouver dans le document. Vous n'avez même pas besoin d'une bibliothèque d'analyse HTML compliquée pour cela, quelque chose de type grep suffira. Par exemple, sur cette page particulière votre question commence par <div class="post-text"> et se termine par </div>. Tout ce qui se trouve entre les deux est en fait un post-texte avec une mise en forme HTML que vous pouvez supprimer avec des espaces supplémentaires et "\ n". Et ce <div class="post-text"> n'apparaît sur la page qu'une seule fois. Une fois que vous allez à grande échelle avec votre application de récupération, vous découvrirez qu'il n'y a pas une grande variété de moteurs de recherche différents sur des sites différents, et vous serez en mesure de réutiliser les analyseurs déjà créés pour les sties en utilisant similaire moteurs de recherche.

La seule chose dont vous devez vous souvenir est l'auto-test intégré. Les sites ont tendance à évoluer et à changer de design de temps en temps. Si votre application va vivre pendant un certain temps, vous devrez inclure dans vos analyseurs une logique qui vérifiera la validité de leurs résultats et vous notifiera chaque fois que la sortie de recherche a changé et n'est plus compatible avec votre analyseur. Ensuite, vous devrez modifier un analyseur particulier ou en écrire un nouveau.

Espérons que cela aide.

Questions connexes