jquery ruby parsing clojure web-crawler

jquery - ¿Lenguas/bibliotecas para descargar y analizar páginas web?



ruby parsing (10)

¿Qué lenguaje y bibliotecas son adecuados para un script para analizar y descargar pequeños números de recursos web?

Por ejemplo, algunos sitios web publican pseudo-podcasts, pero no como feeds RSS adecuados; simplemente publican un archivo MP3 regularmente con una página web que contiene la lista de reproducción. Quiero escribir un script para ejecutarlo regularmente y analizar las páginas relevantes para el enlace y la información de la lista de reproducción, descargar el MP3 y poner la lista de reproducción en las etiquetas de MP3 para que se vea bien en mi iPod. Hay un montón de aplicaciones similares que podría escribir también.

¿Qué idioma recomendarías? Me gustaría que el script se ejecute en Windows y MacOS. Aquí hay algunas alternativas:

  • JavaScript Solo para poder usar jQuery para el análisis. No sé si jQuery funciona fuera de un navegador sin embargo.
  • Python . Probablemente un buen soporte de biblioteca para hacer lo que quiero. Pero no me encanta la sintaxis de Python.
  • Ruby He hecho cosas simples (análisis manual) en Ruby antes.
  • Clojure . Porque quiero pasar un poco de tiempo con eso.

¿Cuál es tu idioma y bibliotecas favoritas para hacer esto? ¿Y por qué? ¿Hay bibliotecas agradables como jQuery para otros idiomas?


¿Qué quieres hacer realmente? Si quieres aprender Clojure || ruby ​​|| C hazlo. Si solo quieres hacerlo, haz lo que sea más rápido para ti. Y al menos, cuando dices Clojure y biblioteca, también estás diciendo Java y biblioteca, hay muchos y algunos son muy buenos (aunque no sé qué son). Y lo mismo se dijo para rubí y pitón arriba. ¿Entonces qué quieres hacer?


Al igual que Mikael S ha mencionado, hpricot es un excelente analizador html de ruby. Sin embargo, para la recuperación de páginas, puede considerar usar una biblioteca de raspado de pantalla como scRUBYt o Mechanize .



En ruby ​​también tienes Nokogiri, Nokogiri (鋸) es un analizador de HTML, XML, SAX y Reader. Entre las muchas características de Nokogiri está la capacidad de buscar documentos a través de los selectores XPath o CSS3.


Los volcados de enlaces de Clojure, que cubren enlive, se basan en tagSoup y agentes para descargas paralelas (los redondeos / volcados de enlaces no son bonitos, pero pasé un tiempo buscando y buscando diferentes librerías. La búsqueda / rastreo puede ser muy fácil o muy complicada dependiendo de la estructura de los sitios rastreados, HTML, XHTML, etc.)

http://blog.bestinclass.dk/index.php/2009/10/functional-social-webscraping/

http://nakkaya.com/2009/12/17/mashups-using-clojure/

http://freegeek.in/blog/2009/10/downloading-a-bunch-of-files-in-parallel-using-clojure-agents/

http://blog.maryrosecook.com/post/46601664/Writing-an-mp3-crawler-in-Clojure

http://gnuvince.wordpress.com/2008/11/18/fetching-web-comics-with-clojure-part-2/

http://htmlparser.sourceforge.net/

http://nakkaya.com/2009/11/23/converting-html-to-compojure-dsl/

http://www.bestinclass.dk/index.php/2009/10/functional-social-webscraping/

cliente http de apache

http://github.com/rnewman/clj-apache-http

http://github.com/heyZeus/clj-web-crawler

http://japhr.blogspot.com/2009/01/clojure-http-clientclj.html


Probablemente haría esto con PHP, curl, y phpQuery ... pero hay muchas formas diferentes ...


Realmente deberías darle un tiro a Python .

Cuando decido diseñar un rastreador, generalmente reproduzco el mismo patrón .

Para cada paso, hay un trabajador, que recoge los datos de un contenedor (principalmente una cola). Hay contenedor entre cada tipo de trabajador. Después de la primera conexión al sitio de destino, todos los tipos de trabajadores pueden ser enlazados. Así que tenemos que usar la sincronización para acceder a estas colas.

  1. Conector: el objeto Session de la biblioteca de requests es notable.
  2. Cargador: con varios cargadores de threaded , se pueden iniciar múltiples solicitudes en ningún momento.
  3. Analizador: xpath se usa intensivamente en cada objeto etree creado con lxml .
  4. Validador: conjunto de aserciones y heurísticas para verificar la validez de los datos analizados.
  5. Archivador: dependiendo de lo que esté almacenado, cuántos y qué tan rápido, pero nosql es a menudo la forma más fácil de almacenar los datos recuperados. Por ejemplo, mongodb y pymongo .

Recomiendo usar Ruby y la librería hpricot .


Si quieres pasar un tiempo con Clojure (¡una muy buena idea IMO!), Enlive una oportunidad a Enlive . La descripción de GitHub lee

un sistema de transformación y plantillas basado en el selector (à la CSS) para Clojure - Leer más

Además de ser útil para la creación de plantillas, es una biblioteca de rastreo web capaz; vea la parte inicial de este tutorial para ver algunos ejemplos simples de raspado. (La tercera es la página de inicio del New York Times, así que en realidad no es tan simple como eso).

Hay otros tutoriales disponibles en la Web si los busca; Enlive en sí viene con algunos documentos / ejemplos. (Además, el código es <1000 líneas en total y muy legible, aunque supongo que esto podría ser menos para alguien nuevo en el idioma).