Patrones y prácticas para Web Scraping en .Net (C #) [cerrado]

9

Prepararé una aplicación para automatizar un sitio web / aplicación externo. En algunos casos, tendré que navegar por el sitio como lo haría un usuario (algunos enlaces que debo seguir no pueden predecirse y deben analizarse a partir de una respuesta)

Ya estoy usando Html Agility Pack , y estoy al tanto de Tidy si es necesario.

¿Hay otras tecnologías que debería tener en cuenta?

¿Hay algún patrón recomendado para poder ajustar rápidamente en caso de que cambie la aplicación web externa? Estoy pensando en encapsular la validación de las respuestas como algún tipo de estrategia o patrón similar que se puede separar / enchufar fácilmente según sea necesario, pero cualquier sugerencia específica sería genial.

jlnorsworthy
fuente
Al respecto, ¿alguna guía paso a paso o Primeros pasos: inicio rápido que se puede completar en 15-20 minutos? Le obtengo una buena muestra de guía paso a paso como berniecook.wordpress.com/2013/01/13/… . Quería cubrir rápidamente varias suposiciones antes de comenzar: instalar (requisitos, herramientas necesarias), configurar, un corriendo rápido Target será una muestra de "listo". Tal vez mejor una muestra de aplicación real.
Kiquenet

Respuestas:

4

Si está buscando automatizar la navegación de un sitio web externo como lo haría un usuario, Watin es perfecto para eso. Conducirá un navegador web a través de un modelo de objetos y tiene una amplia gama de capacidades de análisis basadas en el DOM (así como las capacidades que no son DOM que encontraría en un navegador, incluidas las secuencias de comandos).

Aquí hay un enlace:

Watin.org

grito de terror
fuente
Watin es como tu biblioteca de JavaScript favorita para C #.
The Muffin Man
¿Alguna solución final con la aplicación de muestra de código fuente completo ? En mi humilde opinión, mejores muestras para minimizar la curva de aprendizaje son aplicaciones reales con código fuente completo y buenos patrones y prácticas
Kiquenet
0

Si está buscando la capacidad de realizar cambios rápidamente para rastrearlos en la aplicación web externa, entonces vería las secuencias de comandos. Si C # es su idioma de elección, busque compilar código sobre la marcha. Si está utilizando una base de datos, el código del script se puede almacenar allí, de lo contrario, los archivos de texto sin formato también funcionarían.

En cuanto a los patrones de GoF, la estrategia es la elección del libro de texto.

El otro "patrón" a considerar, especialmente desde que mencionó las respuestas de validación que los utilizan para seleccionar la siguiente acción, es una máquina de estado finito . Por ejemplo, los estados para un cliente de correo web podrían ser "no conectado", "en la bandeja de entrada", "mensaje de lectura", "respuesta de edición", etc. Ejecutaría alguna acción dependiendo del estado, luego basándose en la respuesta, seleccione el siguiente estado.

Crujiente
fuente
0

El patrón realmente debería provenir del problema, pero aquí hay algunas opciones:

Si le preocupa principalmente el costo / molestia del desarrollo continuo: Patrón de estrategia (ya mencionado): use esto para implementar las interfaces de nivel de componente y use una metodología de enlace dinámico para resolver estrategias específicas (implementaciones). Un contenedor de COI (me gusta Autofac en estos días) funcionaría bien.

Si necesita admitir lo anterior y necesita escalar: Map Reduce (¿alguien sabe de un buen m + r fx para .net?).

Sbrenton
fuente
-1

Dependiendo de cuánto cambie la página web, esto podría ser difícil. Puede mantener una lista de expresiones regulares estándar en un DB y luego, cuando una ya no funciona, puede recorrer el conjunto base con otras hasta que llegue a una. Entonces querrás marcar eso para uso futuro.

Josh O'Bryan
fuente