Question

Je me suis intéressé aux bibliothèques XML et HTML de rubyforge pour trouver un moyen simple d'extraire des données d'une page Web. Par exemple, si je souhaite analyser une page utilisateur sur stackoverflow, comment puis-je obtenir les données dans un format utilisable?

Dites que je veux analyser ma propre page utilisateur pour mon score de réputation actuel et ma liste de badges. J'ai essayé de convertir le code source extrait de ma page utilisateur en XML, mais la conversion a échoué en raison d'un div manquant. Je sais que je pourrais comparer les chaînes et trouver le texte que je cherche, mais il doit exister un moyen bien meilleur de le faire.

Je souhaite incorporer cela dans un script simple qui extrait mes données utilisateur sur la ligne de commande et éventuellement les développer dans une application graphique.

Était-ce utile?

La solution

Autres conseils

Malheureusement, stackoverflow prétend être du XML mais ne l’est pas réellement. Hpricot peut toutefois analyser cette soupe de balises dans un arbre d'éléments pour vous.

require 'hpricot'
require 'open-uri'

doc = Hpricot(open("http://stackoverflow.com/users/19990/armin-ronacher"))
reputation = (doc / "td.summaryinfo div.summarycount").text.gsub(/[^\d]+/, "").to_i

Et ainsi de suite.

essayez hpricot , c'est bien ... génial

Je l'ai utilisé plusieurs fois pour récurer l'écran.

J'aime toujours beaucoup ce que Ilya Grigorik écrit, et il a écrit un bon message sur l'utilisation de hpricot.

J'ai également lu cet article

Je n'ai pas fait moi-même non plus, donc YMMV, mais cela semble assez utile.

cela semble être un sujet ancien, mais en voici un nouveau. Exemple de réputation:

#!/usr/bin/env ruby

require 'rubygems'
require 'hpricot'
require 'open-uri'

user = "619673/100kg"
html = "http://stackoverflow.com/users/%s?tab=reputation"

page = html % user
puts page

doc = Hpricot(open(page))
pars = Array.new
doc.search("div[@class='subheader user-full-tab-header']/h1/span[@class='count']").text.each do |p|
  pars << p
end

puts "reputation " + pars[0]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top