2011-06-04 17 views
5

Necesito obtener algunos datos de sitios web en mi sitio web django. Ahora estoy confundido si debería usar bibliotecas de análisis de Python o bibliotecas de rastreo web. ¿El bibliotecas del motor de búsqueda también caen en la misma categoría¿Cuál es la diferencia entre el análisis html y el rastreo web en python?

Quiero saber cuánto es la diferencia entre los dos y si quiero usar esas funciones dentro de mi página web que debo usar

+0

¿Qué bibliotecas de rastreo web tiene para Python? – Xolve

+0

probé Scrapy y no estaba feliz – user2134226

Respuesta

9

Si puede salirse con la web de rastreo de fondo use scrapy. Si necesita agarrar algo inmediatamente, use html5lib (más robusto) o lxml (más rápido). Si va a hacer lo posterior, use la impresionante biblioteca requests. Evitaría usar BeautifulSoup, mechanize, urllib2, httplib.

+1

¿Qué pasa con BeautifulSoup, mechanize, urllib2 y httplib? Velocidad, tolerancia de error? Solo por conocimiento. –

+4

@Mandx BeautifulSoup es muy largo en el diente, no se ha desarrollado activamente durante un tiempo, el autor ha expresado una falta de interés en el desarrollo continuo. html5lib/lxml son mejores opciones hoy. Mecanizar está mal documentado, y generalmente he visto personas más confundidas que cualquier otra cosa. Por otro lado, Scrapy está muy bien documentado y tiene una buena API. Solicitudes es una biblioteca http mucho más pitónica, más fácil de usar y menos atractiva que la alternativa. Pero oye, no tomes mi palabra, ¡revísalos! – zeekay

+0

Gracias! Definitivamente usaré Solicitudes, la [diferencia] (https://gist.github.com/973705) lo hará casi obligatorio. Además, creo que puedo agregar [PyQuery] (https://bitbucket.org/olauzanne/pyquery) para extraer información de datos HTML/XML. Utilizando la misma sintaxis de selector que jQuery para seleccionar nodos, devuelve nodos lxml en función de la consulta. Muy útil de hecho. –

1

analizar HTML analizará la página y puedes recoger los enlaces presentes en él. Estos enlaces pueden agregarse a la cola y visitar estas páginas. Combina estos pasos en un bucle e hiciste un rastreador básico.

Las bibliotecas de rastreo son las soluciones listas para usar que rastrean. Proporcionan más funciones como la detección de enlaces recursivos, ciclos, etc. Muchas de las funciones que desea codificar ya se habrían hecho dentro de estas bibliotecas.

Sin embargo, se prefiere la primera opción si tiene algunos requisitos especiales que las bibliotecas no satisfacen.

1

He hecho cosas similares anteriormente. Los rastreadores web no me eran útiles si quería que el análisis se realizara inmediatamente para buscar algo y presentarlo al usuario. Para cosas de trabajo por lotes, son más apropiados. Encontré BeautifulSoup, lxml y mechanize para ser bastante útil.

Cuestiones relacionadas