Estoy pensando en probar Beautiful Soup , un paquete de Python para el raspado de HTML. ¿Hay otros paquetes de raspado de HTML que debería mirar? Python no es un requisito, en realidad también estoy interesado en escuchar sobre otros idiomas.
La historia hasta ahora:
- Pitón
- Rubí
- .RED
- Perl
- Java
- JavaScript
- PHP
- La mayoría de ellos
XPathExpression
se puede usar el propio Java (que existe desde Java 1.5)Respuestas:
El equivalente de Ruby World a Beautiful Soup es el Hpricot de why_the_lucky_stiff .
fuente
En el mundo .NET, recomiendo el paquete de agilidad HTML. No es tan simple como algunas de las opciones anteriores (como HTMLSQL), pero es muy flexible. Le permite manipular HTML mal formado como si fuera un XML bien formado, por lo que puede usar XPATH o simplemente iterar sobre nodos.
http://www.codeplex.com/htmlagilitypack
fuente
BeautifulSoup es una excelente manera de raspar HTML. Mi trabajo anterior me hizo raspar mucho y desearía saber sobre BeautifulSoup cuando comencé. Es como el DOM con muchas más opciones útiles y es mucho más pitónico. Si quieres probar Ruby, portaron BeautifulSoup llamándolo RubyfulSoup pero no se ha actualizado en mucho tiempo.
Otras herramientas útiles son HTMLParser o sgmllib.SGMLParser, que forman parte de la biblioteca estándar de Python. Estos funcionan mediante métodos de llamada cada vez que ingresa / sale de una etiqueta y encuentra texto html. Son como Expat si estás familiarizado con eso. Estas bibliotecas son especialmente útiles si va a analizar archivos muy grandes y crear un árbol DOM sería largo y costoso.
Las expresiones regulares no son muy necesarias. BeautifulSoup maneja expresiones regulares, por lo que si necesita su poder, puede utilizarlo allí. Le digo que vaya con BeautifulSoup a menos que necesite velocidad y una huella de memoria más pequeña. Si encuentra un mejor analizador HTML en Python, hágamelo saber.
fuente
Encontré que HTMLSQL es una forma ridículamente simple de screencrape. Lleva literalmente minutos obtener resultados con él.
Las consultas son súper intuitivas, como:
Ahora hay algunas otras alternativas que toman el mismo enfoque.
fuente
La biblioteca Python lxml actúa como un enlace Pythonic para las bibliotecas libxml2 y libxslt. Me gusta especialmente su soporte XPath y su bonita impresión de la estructura XML en memoria. También es compatible con el análisis de HTML roto. Y no creo que pueda encontrar otras bibliotecas / enlaces de Python que analicen XML más rápido que lxml.
fuente
Para Perl, hay WWW :: Mechanize.
fuente
Python tiene varias opciones para el raspado de HTML además de Beatiful Soup. Aquí hay algunos otros:
WWW:Mechanize
. Le proporciona un objeto similar al navegador para que no interactúe con las páginas web.libwww
. Admite varias opciones para recorrer y seleccionar elementos (por ejemplo, selección de XPath y CSS)fuente
'Simple HTML DOM Parser' es una buena opción para PHP, si estás familiarizado con los selectores jQuery o JavaScript, te encontrarás en casa.
Encuéntralo aquí
También hay una publicación de blog al respecto aquí.
fuente
¿Por qué nadie ha mencionado JSOUP todavía para Java? http://jsoup.org/
fuente
La utilidad de creador de plantillas de Adrian Holovaty (de la fama de Django ) utiliza un enfoque muy interesante: le proporciona variaciones de la misma página y "aprende" dónde están los "agujeros" para los datos variables. No es específico de HTML, por lo que también sería bueno para eliminar cualquier otro contenido de texto sin formato. Lo he usado también para archivos PDF y HTML convertidos a texto sin formato (con pdftotext y lynx, respectivamente).
fuente
Sé y amo Screen-Scraper .
Screen-Scraper es una herramienta para extraer datos de sitios web. Screen-Scraper automatiza:
Usos comunes:
Técnico:
Tres ediciones de screen-scraper:
fuente
Primero averiguaría si el (los) sitio (s) en cuestión proporcionan un servidor API o fuentes RSS para acceder a los datos que necesita.
fuente
Scraping Stack Overflow es especialmente fácil con Shoes y Hpricot .
fuente
Otra opción para Perl sería Web :: Scraper, que se basa en Ruby's Scrapi . En pocas palabras, con una sintaxis agradable y concisa, puede obtener un raspador robusto directamente en las estructuras de datos.
fuente
He tenido cierto éxito con HtmlUnit , en Java. Es un marco simple para escribir pruebas unitarias en la interfaz de usuario web, pero igualmente útil para el raspado de HTML.
fuente
Yahoo! Query Language o YQL se pueden usar junto con jQuery, AJAX, JSONP para descartar páginas web
fuente
Otra herramienta para .NET es MhtBuilder
fuente
También existe esta solución: netty HttpClient
fuente
Yo uso Hpricot en Ruby. Como ejemplo, este es un fragmento de código que utilizo para recuperar todos los títulos de libros de las seis páginas de mi cuenta HireThings (ya que no parecen proporcionar una sola página con esta información):
Está bastante completo. Todo lo que viene antes de esto son las importaciones de la biblioteca y la configuración de mi proxy.
fuente
He usado Beautiful Soup mucho con Python. Es mucho mejor que la comprobación de expresiones regulares, porque funciona como usar el DOM , incluso si el HTML está mal formateado. Puede encontrar rápidamente etiquetas HTML y texto con una sintaxis más simple que las expresiones regulares. Una vez que encuentre un elemento, puede iterar sobre él y sus elementos secundarios, lo que es más útil para comprender los contenidos en código que con expresiones regulares. Desearía que Beautiful Soup existiera hace años cuando tuve que hacer muchas capturas de pantalla: me habría ahorrado mucho tiempo y dolor de cabeza ya que la estructura HTML era tan pobre antes de que la gente comenzara a validarla.
fuente
Aunque fue diseñado para pruebas web .NET , he estado usando el marco WatiN para este propósito. Como está basado en DOM, es bastante fácil capturar HTML, texto o imágenes. Recientemente, lo usé para volcar una lista de enlaces de una consulta de espacio de nombres de MediaWiki All Pages en una hoja de cálculo de Excel. El siguiente código de VB.NET es bastante burdo, pero funciona.
fuente
Implementaciones del algoritmo de análisis HTML5 : html5lib (Python, Ruby), Validator.nu HTML Parser (Java, JavaScript; C ++ en desarrollo), Hubbub (C), Twintsam (C #; próxima).
fuente
Serías un tonto si no usaras Perl. Aquí vienen las llamas.
Agréguese a los siguientes módulos y elimine cualquier raspado.
fuente
He usado LWP y HTML :: TreeBuilder con Perl y los he encontrado muy útiles.
LWP (abreviatura de libwww-perl) le permite conectarse a sitios web y extraer el HTML, puede obtener el módulo aquí y el libro de O'Reilly parece estar en línea aquí .
TreeBuilder le permite construir un árbol a partir del HTML, y la documentación y la fuente están disponibles en HTML :: TreeBuilder - Analizador que construye un árbol de sintaxis HTML .
Sin embargo, podría haber demasiado trabajo pesado para hacer con algo como este enfoque. No he mirado el módulo Mecanizar sugerido por otra respuesta, así que bien puedo hacerlo.
fuente
En Java, puede usar TagSoup .
fuente
Bueno, si quieres hacerlo desde el lado del cliente usando solo un navegador, tienes jcrawl.com . Después de haber diseñado su servicio de desguace desde la aplicación web ( http://www.jcrawl.com/app.html ), solo necesita agregar el script generado a una página HTML para comenzar a usar / presentar sus datos.
Toda la lógica de desguace ocurre en el navegador a través de JavaScript. Espero que le sea útil. Haga clic en este enlace para ver un ejemplo en vivo que extrae las últimas noticias de Yahoo tennis .
fuente
Probablemente ya tenga tanto, pero creo que esto es lo que está tratando de hacer:
fuente
He tenido resultados mixtos en .NET usando SgmlReader, que originalmente fue iniciado por Chris Lovett y parece haber sido actualizado por MindTouch .
fuente
Me gusta la función ImportXML (URL, XPath) de las hojas de cálculo de Google.
Repetirá las celdas en la columna si su expresión XPath devuelve más de un valor.
Puede tener hasta 50
importxml()
funciones en una hoja de cálculo.El complemento web de RapidMiner también es bastante fácil de usar. Puede hacer publicaciones, acepta cookies y puede configurar el agente de usuario .
fuente
También he tenido un gran éxito al usar Jaxer + jQuery de Aptana para analizar páginas. No es tan rápido o 'similar a un script' en la naturaleza, pero los selectores jQuery + JavaScript / DOM real es un salvavidas en páginas más complicadas (o malformadas).
fuente