333 votos

Las opciones de HTML raspado?

Estoy pensando en intentar Hermosa Sopa, un paquete de Python para HTML raspado. Hay otras HTML raspado de paquetes que debo observar? Python no es un requisito, estoy realmente interesado en escuchar acerca de otros idiomas.

La historia hasta ahora:

50voto

Joey deVilla Puntos 4487

El mundo Ruby es el equivalente a la Sopa de Hermosa es why_the_lucky_stiff del Hpricot.

37voto

Jon Galloway Puntos 28243

En el .NET mundo, recomiendo el código HTML Agilidad Pack. No cerca tan simple como algunas de las opciones de arriba (como HTMLSQL), pero es muy flexible. Permite maniuplate mal formada HTML como si se tratara de XML bien formado, así que usted puede utilizar XPATH o simplemente itereate sobre los nodos.

http://www.codeplex.com/htmlagilitypack

29voto

Cristian Puntos 10133

BeautifulSoup es una gran manera de ir para HTML raspado. Mi trabajo anterior me tenía que hacer un montón de raspado y me gustaría saber acerca de BeautifulSoup cuando empecé. Es como el DOM con un montón más de opciones útiles y es mucho más python. Si quieres probar Ruby se portó BeautifulSoup llamando RubyfulSoup pero no ha sido actualizado en mucho tiempo.

Otras herramientas útiles son HTMLParser o sgmllib.SGMLParser que son parte del estándar de la biblioteca de Python. Estos trabajos llamando a métodos cada vez que quiera entrar/salir de una etiqueta y de encuentro de texto html. Son como los residentes en el Extranjero, si usted está familiarizado con eso. Estas bibliotecas son especialmente útiles si usted va a analizar archivos muy grandes y la creación de un árbol DOM sería largo y costoso.

Las expresiones regulares no son muy necesarios. BeautifulSoup maneja expresiones regulares, así que si usted necesita que su poder puede utilizar allí. Me dicen que vaya con BeautifulSoup a menos que usted necesidad de la velocidad y un menor consumo de memoria. Si usted encuentra un mejor analizador de HTML en Python, hágamelo saber.

18voto

deadprogrammer Puntos 4521

Me encontré con HTMLSQL a ser ridículamente simple manera de screenscrape. Toma literalmente minutos para obtener resultados con ella.

Las consultas son super-intuitiva - como:

SELECT title from img WHERE $class == 'userpic'

Ahora hay algunas otras alternativas que adoptan el mismo enfoque.

14voto

akaihola Puntos 10007

El Python lxml de la biblioteca actúa como Python el carácter de vinculante para el libxml2 y libxslt bibliotecas. Me gusta especialmente su compatibilidad con XPath y bastante-impresión de la memoria en una estructura XML. También admite el análisis de HTML roto. Y no creo que usted puede encontrar otras librerías de Python/enlaces que parseo del XML más rápido que lxml.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X