2009-08-05 6 views
2

J'écris une application spéciale de type robot qui doit récupérer le contenu principal de diverses pages. Juste pour clarifier: Je dois le vrai « viande » de la page (à condition qu'il y en a un, naturellement)Comment puis-je résoudre le contenu d'une page Web?

J'ai essayé différentes approches:

  1. De nombreuses pages ont des flux RSS, donc je peux lire le flux et obtenez cette page spécifique.
  2. De nombreuses pages utilisent « contenu » meta tags
  3. Dans beaucoup de cas, l'objet présenté au milieu de l'écran est le principal « contenu » de la page

Cependant, ces méthodes ne Je travaille toujours, et j'ai remarqué que Facebook fait un très bon travail en faisant cela (quand vous voulez attacher un lien, ils vous montrent le contenu qu'ils ont trouvé sur la page de liens).

Alors, avez-vous un conseil pour une approche que j'ai regardée?

Merci!

+0

Pourquoi supposez-vous qu'il y a du «contenu principal»? –

Répondre

1

Il n'y a vraiment pas de façon standard pour les pages Web de marquer "c'est la viande". La plupart des pages ne le veulent même pas parce que cela leur permet de voler leur activité principale plus facilement. Donc, vous devez vraiment écrire un cadre qui peut utiliser des règles par page pour localiser le contenu que vous voulez.

0

Eh bien, votre question est encore un peu vague. Dans la plupart des cas, un "crawler" va simplement trouver des données sur le web dans un format texte, et les traiter pour le stockage, l'analyse, etc. La chose "Facebook Screenshot" est une bête complètement différente. Si vous recherchez simplement un robot d'indexation basé sur le Web, plusieurs bibliothèques peuvent être utilisées pour parcourir le DOM d'une page Web très facilement et peuvent récupérer le contenu que vous recherchez.

Si vous utilisez Python, essayez Beautiful Soup Si vous utilisez Ruby, essayez hpricot

Si vous voulez le contenu d'une page Web pour le traitement à une date ultérieure, et tout simplement obtenir stocker underneat la "html" tag.

Voici un exemple BeautifulSoup pour obtenir tous les liens au large d'une page:

require 'hpricot' 
require 'open-uri' 
doc = Hpricot(open("http://www.stackoverflow.com")) 
(doc/"a").each do |link| 
    puts link.attributes['href'] 
end 

Edit: Si vous allez être avant tout contenu saisissant des mêmes sites (par exemple la section des commentaires de Reddit, des questions de StackOverflow, les liens Digg, etc) vous pouvez coder en dur leur format afin que votre robot d'exploration puisse dire: "Ok, je suis sur Reddit, j'obtiens tout avec la classe" chose ". chercher, comme divs avec class/id de "main", "contenu", "center", etc

Questions connexes