Modelli e pratiche per il Web Scraping in .Net (C #) [chiuso]

9

Metterò insieme un'applicazione per automatizzare un sito web / un'applicazione esterna. In alcuni casi dovrò navigare nel sito come farebbe un utente (alcuni link che devo seguire non possono essere previsti e devono essere analizzati da una risposta)

Sto già utilizzando Html Agility Pack e sono a conoscenza di Tidy se necessario.

Ci sono altre tecnologie di cui dovrei essere a conoscenza?

Esistono dei pattern consigliati per essere in grado di adattarsi rapidamente nel caso in cui l'app Web esterna cambi? Sto immaginando di incapsulare la convalida delle risposte come un tipo di strategia o modello simile che può essere facilmente separati / collegati in base alle necessità, ma ogni suggerimento specifico sarebbe ottimo.

    
posta jlnorsworthy 11.07.2011 - 18:45
fonte

4 risposte

4

Se stai cercando di automatizzare la navigazione di un sito web esterno come farebbe un utente, Watin è perfetto per questo. Conduce un browser Web attraverso un modello a oggetti e ha una vasta gamma di funzionalità di analisi basate sul DOM (oltre alle abilità non DOM che si trovano in un browser, incluso lo scripting).

Ecco un link:

Watin.org

    
risposta data 27.07.2011 - 07:49
fonte
0

Se stai cercando la possibilità di rapidamente di apportare modifiche per tenere traccia di quelle nell'app Web esterna, allora guarderei gli script. Se C # è la tua lingua preferita, guarda subito il codice di compilazione. Se stai usando un database, il codice dello script può essere memorizzato lì, altrimenti funzionerebbero anche i file di testo normale.

Per quanto riguarda i pattern GoF, Strategia è la scelta da manuale.

L'altro "modello" da considerare, soprattutto perché hai menzionato le risposte di convalida che li usano per selezionare l'azione successiva, è un finito -state machine . Ad esempio, gli stati per un client di posta elettronica potrebbero essere "non connessi", "nella casella di posta", "messaggio di lettura", "modifica di risposta", ecc. Si eseguirà un'azione a seconda dello stato, quindi in base a la risposta, selezionare lo stato successivo.

    
risposta data 19.07.2011 - 18:23
fonte
0

Il modello dovrebbe derivare dal problema, ma qui ci sono alcune scelte:

Se ti preoccupi principalmente dei costanti costi di sviluppo / fastidio: Schema della strategia (già menzionato): utilizzalo per implementare le interfacce a livello di componente e utilizza una metodologia di associazione dinamica per risolvere strategie specifiche (implementazioni). Un container IOC (mi piace Autofac in questi giorni) funzionerebbe bene.

Se è necessario supportare quanto sopra, è necessario ridimensionare: Riduci mappa (qualcuno sa di una buona m + r fx per .net?).

    
risposta data 05.11.2011 - 18:53
fonte
-1

A seconda di quanto la pagina web cambia, potrebbe essere difficile. È possibile mantenere un elenco di espressioni regolari standard in un DB e quando non si lavora più è possibile scorrere il set di base con gli altri fino a quando non ne viene premuto uno. Quindi vorrai contrassegnarlo per uso futuro.

    
risposta data 28.07.2011 - 19:56
fonte

Leggi altre domande sui tag