woorank una trafico pagina informe google calificacion auditoria analizar analizador analisis html xml ruby screen-scraping

html - trafico - ¿Cuál es la mejor manera de analizar una página web en Ruby?



seo calificacion (6)

He estado buscando en las bibliotecas XML y HTML en rubyforge una forma simple de extraer datos de una página web. Por ejemplo, si quiero analizar una página de usuario en stackoverflow, ¿cómo puedo obtener los datos en un formato utilizable?

Supongamos que quiero analizar mi propia página de usuario para obtener mi puntaje de reputación actual y mi listado de placas. Intenté convertir la fuente recuperada de mi página de usuario en xml, pero la conversión falló debido a un div perdido. Sé que podría hacer una comparación de cuerdas y encontrar el texto que estoy buscando, pero tiene que haber una forma mucho mejor de hacerlo.

Quiero incorporar esto en una secuencia de comandos simple que escupe mis datos de usuario en la línea de comandos, y posiblemente lo expanda en una aplicación GUI.


Algo con lo que me encontré tratando de hacer esto antes es que pocas páginas web son documentos XML bien formados. Hpricot puede ser capaz de lidiar con eso (no lo he usado), pero cuando estaba haciendo un proyecto similar en el pasado (usando Python y las funciones de análisis integradas de la biblioteca) me ayudó a tener un pre-procesador para limpiar el HTML. Utilicé los enlaces de python para HTML Tidy como este y me hizo la vida mucho más fácil. Los enlaces de Ruby están aquí pero no los he probado.

¡Buena suerte!



Lamentablemente, reclama ser XML, pero en realidad no lo es. Sin embargo, Hpricot puede analizar esta sopa de etiquetas en un árbol de elementos para usted.

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

Etcétera.


prueba hpricot , está bien ... increíble

Lo he usado varias veces para raspar la pantalla.


parece ser un tema viejo, pero aquí hay uno nuevo. Ejemplo obteniendo reputación:

#!/usr/bin/env ruby require ''rubygems'' require ''hpricot'' require ''open-uri'' user = "619673/100kg" html = "http://.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]