Mejor opción para raspado web (HTMLAgilityPack o Python + beautifulsoup) para programador de C #

beautifulsoup c# html-agility-pack python

Pregunta

Soy un programador .NET. Necesito trabajar en un proyecto web de raspado. Quiero tener una idea sobre HTMLAgilityPack vs BeautifulSoup.

Mucha gente dice: BeautifulSoup es mucho mejor que HTMLAgilityPack. Pero para esto, necesito aprender Python.

Entonces, mi pregunta es: ¿Es razonable para mí aprender Python y BeautifulSoup o continuar con C # y HTMLAgilityPack?

Cualquier otra sugerencia es bien recibida.

Respuesta aceptada

En el mundo de C # .NET, recomendaría el HTMLAgilityPack porque es muy flexible. Te permite manipular HTML mal formado como si fuera un XML bien formado, por lo que puedes usar XPath o simplemente iterar sobre los nodos.

BeautifulSoup es una excelente manera de obtener raspado de HTML, pero desde la perspectiva del desarrollador, no es realmente fácil obtener una tecnología completamente nueva. Así que recomiendo HTMLAgilityPack si eres un chico .NET.

Puede obtener un gran éxito con la combinación de HTML Agility Pack , expresiones regulares y XDocument (LINQ -> XMLy cosas)

Es extremadamente poderoso - LINQ y lambda (parte 3) - HTML Agility Pack es una publicación del blog de Vijay Santhanam que me enganchó.


Respuesta popular

CsQuery , una biblioteca que creé, es una alternativa relativamente nueva a Html Agility Pack. Ofrece las siguientes ventajas:

  • Soporte completo para el selector CSS3, que para la mayoría de las personas ya es familiar y mucho más fácil que xpath, y de la misma forma en que ya has codificado para el cliente
  • La API de jQuery, por las mismas razones.
  • Utiliza el analizador HTML validator.nu , un analizador totalmente compatible con HTML5. Esta es la misma base de código utilizada por los navegadores basados ​​en Gecko (Firefox), lo que significa que debería producir exactamente el mismo DOM que los navegadores web, incluso para un marcado normalmente incorrecto / incorrecto.
  • Indexa documentos haciendo que los selectores sean extremadamente rápidos, incluso en documentos muy grandes. HAP debe atravesar el árbol de documentos completo para cada selector, por lo que es muy lento para los selectores complejos y los documentos grandes.
  • Amplia cobertura de pruebas unitarias: todas las pruebas de jQuery y Sizzle (el motor de selección CSS de jQuery) se han transferido a C #.

Desventajas:

  • Ahora mismo solo funciona compila .NET 4+ framework completo, mientras que HAP tiene compilaciones para la mayoría de los entornos .NET.

Puede obtenerlo de nuget: Install-Package CsQuery .




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué