Qual è la lingua più flessibile per lo scraping di siti Web? [chiuso]

3

Sono nuovo nella programmazione. Conosco un piccolo pitone e un piccolo obiettivo c, e ho seguito tutorial per ognuno. Poi mi è venuto in mente, ho bisogno di sapere quale linguaggio è più flessibile (python, obj c, qualcos'altro) per lo screen scraping di un sito web per i contenuti.

Che cosa intendo per "flessibile"?

Bene, idealmente, ho bisogno di qualcosa che sarà facile da refactoring e modificare per progetti simili. Sto cercando di evitare di fare molte riscritture (beh, re-coding) se volessi cambiare alcune delle variabili nel programma (cioè, il sito web da raschiare, il contenuto da recuperare, ecc.). / p>

Ad ogni modo, se puoi per favore darmi la tua opinione, sarebbe fantastico. Oh, e se conosci qualche framework esistente per la lingua che consigli, per favore condividi. (Conosco un po 'di Selenium e BeautifulSoup per python)

    
posta MSe 09.05.2011 - 21:59
fonte

4 risposte

14

Recentemente ho scritto un web raschietto relativamente complesso per raccogliere una tonnellata di dati. Doveva fare un parsing relativamente complesso, ne avevo bisogno per inserirli in un database, ecc. Sono un programmatore C # e un ex Perl.

Ho scritto il mio raschietto originale usando Python. Ho iniziato il giovedì e domenica mattina stavo raccogliendo circa un milione di risultati da un sito di cavalli da esposizione. Ho usato Python e SQLlite perché erano veloci.

TUTTAVIA, come ho iniziato a mettere insieme i programmi per mantenere regolarmente aggiornati i dati e per compilare SQL Server che avrebbe riavviato la mia applicazione MVC3, ho continuato a cogliere ostacoli e lacune nella mia conoscenza di Python.

Alla fine, ho completamente riscritto il raschietto / parser in C # usando HtmlAgilityPack e funziona meglio di prima (e quasi veloce come).

Poiché CONOSCEVA LA LINGUA e l'ambiente molto meglio ho potuto aggiungere un migliore supporto per database, una registrazione migliore, una migliore gestione degli errori, ecc.

Quindi ... risposta breve .. Python è stato il più veloce sul mercato con una soluzione "abbastanza buono per ora", ma la lingua che conosco meglio (C #) è stata la migliore -term solution .

Modifica Ho usato BeautifulSoup per il mio crawler originale scritto in Python.

    
risposta data 09.05.2011 - 22:30
fonte
5

Il più flessibile è quello con cui hai più familiarità.

Personalmente, io uso Python per quasi tutte le mie utilità. Per raschiare, trovo che la sua funzionalità specifica per l'analisi e la manipolazione delle stringhe richieda poco codice, sia veloce e ci siano tonnellate di esempi là fuori (community strong). È probabile che qualcuno abbia già scritto qualsiasi cosa tu stia tentando di fare, o che ci sia almeno qualcosa sulla stessa linea che ha bisogno di un refactoring molto piccolo.

    
risposta data 09.05.2011 - 22:10
fonte
1

Penso che sia sicuro affermare che Python è un posto migliore per iniziare rispetto all'obiettivo C. Onestamente, quasi ogni lingua soddisfa il requisito "flessibile". Tutto ciò di cui hai bisogno è un parametro di configurazione ben congegnato. Inoltre, un linguaggio dinamico come Python può fare molto per aumentare la flessibilità, a patto di tenere conto degli errori di tipo runtime.

    
risposta data 09.05.2011 - 22:12
fonte
1

Recentemente ho scritto un web-raschietto molto semplice; Ho scelto Common Lisp mentre sto imparando la lingua. Vedi link per il codebase e link per una critica.

Sulla base della mia esperienza - sia della lingua che della disponibilità di aiuto dei Lispers esperti - ti consiglio di investigare su Common Lisp per il tuo scopo.

Sono disponibili eccellenti librerie di analisi XML per CL e librerie per l'analisi di HTML non valido, di cui avrai bisogno a meno che i siti che stai analizzando siano costituiti esclusivamente da XHTML valido.

Inoltre, Common Lisp è un buon linguaggio in cui implementare i DSL; una DSL per il web-scraping può essere una soluzione ai tuoi requisiti di flessibilità e amp; riutilizzo.

    
risposta data 10.05.2011 - 05:12
fonte

Leggi altre domande sui tag