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


9

Metterò insieme un'applicazione per automatizzare un sito Web / un'applicazione esterni. 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 degli schemi 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 qualche tipo di strategia o modello simile che può essere facilmente separato / inserito se necessario, ma eventuali suggerimenti specifici sarebbero grandiosi.


A tale proposito, una guida dettagliata o Guida introduttiva - Avvio rapido che può essere completato in 15-20 minuti? Ti procuro un buon esempio di guida passo-passo come berniecook.wordpress.com/2013/01/13/… Volevo coprire rapidamente diversi presupposti prima di iniziare: installa (requisiti, strumenti richiesti), configura, un correre veloce. Il target sarà un campione "vai e pronto". Forse meglio un vero esempio di applicazione.
Kiquenet,

Risposte:


4

Se stai cercando di automatizzare la navigazione di un sito Web esterno come farebbe un utente, Watin è perfetto per questo. Condurrà un browser Web attraverso un modello a oggetti e ha una vasta gamma di capacità di analisi basate sul DOM (così come le capacità non DOM che potresti trovare in un browser, incluso lo scripting).

Ecco un link:

Watin.org


Watin è come la tua libreria JavaScript preferita per C #.
The Muffin Man,

Qualche soluzione finale con l' applicazione di esempio del codice sorgente completo ? IMHO, campioni migliori per minimizzare la curva di apprendimento sono applicazioni reali con codice sorgente completo e buone pratiche e schemi
Kiquenet,

0

Se stai cercando la possibilità di apportare rapidamente modifiche per rintracciarle nell'app Web esterna, allora darei un'occhiata agli script. Se C # è la tua lingua preferita, allora guarda il codice di compilazione al volo. Se si utilizza un database, il codice dello script può essere memorizzato lì, altrimenti anche i file di testo normale funzionerebbero.

Per quanto riguarda i modelli GoF, la strategia è la scelta da manuale.

L'altro "modello" da considerare, specialmente da quando hai menzionato la convalida delle risposte utilizzandole per selezionare l'azione successiva, è una macchina a stati finiti . Ad esempio, gli stati per un client di posta elettronica potrebbero essere "non connessi", "nella posta in arrivo", "lettura messaggio", "modifica risposta", ecc. Dovresti eseguire alcune azioni a seconda dello stato, quindi in base a la risposta, selezionare lo stato successivo.


0

Lo schema dovrebbe davvero derivare dal problema, ma qui ci sono alcune scelte:

Se ti preoccupi principalmente dei costi di sviluppo / fastidio in corso: modello di 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 conosce un buon m + r fx per .net?).


-1

A seconda di quanto cambia la pagina Web, questo potrebbe essere difficile. È possibile mantenere un elenco di espressioni regolari standard in un DB e quindi quando uno non funziona più è possibile scorrere il set di base con altri fino a quando non si colpisce uno. Quindi vorresti contrassegnarlo per un uso futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.