2009-04-17 17 views
12

Ciao, voglio creare un'app desktop (C# prob) che graffi o manipoli un modulo su una pagina web di terze parti. Fondamentalmente inserisco i miei dati nel modulo nell'app desktop, si passa al sito Web di terze parti e, utilizzando lo script o qualsiasi altra cosa in background, inserisco i miei dati lì (incluso il mio login) e faccio clic sul pulsante di invio per me.I voglio solo evitare di caricare il browser!Qual è il miglior linguaggio di raschiatura dello schermo?

Non avendo fatto molto (nessuno!) Lavoro in questo settore mi chiedevo se un linguaggio di scripting come perl, python, ruby ​​etc mi permettesse di farlo? O semplicemente fai tutto lo scraping usando C# e .net? Qual è il migliore IYO?

Stavo pensando allo script in quanto potrebbe essere necessario collegare lo stesso script a qualcosa proveniente da applicazioni su piattaforme diverse (ad esempio, symbian mobile dove non sarei in grado di svilupparlo in C# come farei per la versione desktop).

Non è un'app Web, altrimenti potrei utilizzare il sito originale. Mi rendo conto che sembra tutto inutile, ma l'automazione per questa specifica forma sarebbe per me un vero risparmio di tempo.

+1

Questa è una domanda sulla web-scraping non screen-scraping. Ritornalo, per favore. –

+1

Aggiunto tag di web scraping. Non è stato rimosso il tag screen-scraping. –

risposta

2

IMO Le funzionalità di espressioni regolari incorporate di Perl e la possibilità di manipolare il testo lo renderebbero un concorrente piuttosto buono per lo screen scraping.

4

C# è più che adatto per il vostro screen scraping esigenze. La funzionalità Regex di .NET è davvero bella. Tuttavia, con un compito così semplice, sarà difficile trovare una lingua che non faccia ciò che vuoi relativamente facilmente. Considerando che stai già programmando in C#, direi che non esagerare.

Anche la funzionalità di raschiatura dello schermo incorporata è di prim'ordine.

26

Non dimenticare di guardare BeautifulSoup, viene altamente raccomandato.

Vedere, ad esempio, options-for-html-scraping. Se è necessario selezionare un linguaggio di programmazione per questa attività, direi Python.

Una soluzione più diretta alla tua domanda, vedere twill, un semplice linguaggio di scripting per la navigazione Web.

6

Io uso C# per raschiare. Vedere il pacchetto utile HtmlAgilityPack. Per analizzare le pagine, utilizzo sia XPATH che espressioni regolari. .NET può anche gestire facilmente i cookie se necessario.

Ho scritto una piccola classe che racchiude tutti i dettagli della creazione di un WebRequest, inviandolo, in attesa di una risposta, salvando i cookie, gestendo gli errori di rete e ritrasmettendo, ecc. - il risultato finale è quello per la maggior parte delle situazioni Posso semplicemente chiamare "GetRequest \ PostRequest" e ottenere un HtmlDocument indietro.

4

Si potrebbe provare a utilizzare il .NET HTML Agility Confezione:

http://www.codeplex.com/htmlagilitypack

"Si tratta di un parser HTML agile che costruisce una lettura/scrittura DOM e supporta XPATH normale o XSLT (in realtà don DEVI capire XPATH e XSLT per usarlo, non ti preoccupare ...). È una libreria di codice .NET che ti permette di analizzare file HTML "fuori dal web". Il parser è molto tollerante con "real mondo "HTML malformato Il modello a oggetti è molto simile a quello che propone System.Xml, ma per documenti HTML (o flussi)."

0

o bastone con WebClient in C# e alcune manipolazioni di stringhe.

2

Ruby è abbastanza grande! ... provare la sua hpricot/meccanizzare

1

HTML Agility Pack (c#)

  1. XPath è borked, il modo in cui il codice HTML viene pulito per renderlo compatibile con xml lascerà cadere i tag e si deve regolare l'espressione per farlo funzionare.
  2. semplice da usare

Mozilla Parser (Java)

  1. supporto XPath Solid
  2. è necessario impostare le variabili enviroment prima che funziona che è un dolore
  3. fusione tra org.dom4j.Node e org.w3c.dom.Node per ottenere proprietà diverse è un vero dolore
  4. muore su html non standard (0.3 risolti s)
  5. migliore soluzione per XPath
  6. problemi di accesso a dati su nodi in una NodeList

    uso un for (int i = 1; i < = list_size; i ++) per aggirare questo

Beautiful Soup (Python)

non ho molta esperienza, ma qui è quello che ho trovato

  1. alcun supporto XPath
  2. bella interfaccia per pathing html

preferisco Mozilla parser HTML

0

I secondo la raccomandazione per Python (o Beautiful Soup). Attualmente mi trovo nel bel mezzo di un piccolo progetto di screen-scraping che usa python e la gestione automatica di cose come l'autenticazione dei cookie di Python 3 (tramite CookieJar e urllib) semplifica enormemente le cose. Python supporta tutte le funzionalità più avanzate di cui potresti avere bisogno (come le espressioni regolari), oltre ad avere il vantaggio di essere in grado di gestire rapidamente progetti di questo tipo (non troppo sovraccarico nell'affrontare cose di basso livello). È anche relativamente multipiattaforma.

Problemi correlati