Miglioramento delle prestazioni per il codice di scrap web

2

Ho un sito web in cui il codice raschia altri siti Web per ottenere dati accurati. Mentre il codice funziona bene, ma c'è un discreto ritardo nelle prestazioni perché il codice scarica il flusso html da vari siti (alcune volte 9 siti Web), estrae la relativa parte e quindi esegue il rendering della pagina html.

Cosa devo fare per ottenere prestazioni ottimali. Devo passare da hosting condiviso (Godaddy) al mio server o non ha nulla a che fare con il mio hosting e devo apportare modifiche al mio codice?

    
posta Pankaj Upadhyay 25.03.2012 - 07:22
fonte

1 risposta

6

API / CSV

Chiedi a quei siti web se forniscono un'API o, se non hai bisogno di informazioni aggiornate o se le informazioni necessarie non cambiano frequentemente, se puoi vendere / darti gratuitamente i dati stessi (ad esempio in un file CSV). Alcuni siti Web di piccole dimensioni possono avere modi più elaborati per accedere ai dati, ad esempio un file CSV per le informazioni meno recenti e un feed RSS per quello modificato.

Questi siti Web sarebbero probabilmente felici di aiutarti, dal momento che fornirti un'API ridurrebbe la tua CPU e l'utilizzo della larghezza di banda da parte tua.

Profilo

Lo scraping dello schermo è davvero brutto quando si tratta di prestazioni e ridimensionamento. Potresti essere limitato da:

  • le prestazioni della tua macchina, poiché l'analisi, a volte un file HTML non valido, richiede tempo,
  • la tua velocità di rete,
  • la loro velocità di rete utilizzo , ovvero la velocità con cui puoi accedere alle pagine del loro sito web in base alle restrizioni impostate, come la protezione DOS e il numero di richieste al secondo per screen scrappers e motore di ricerca crawler,
  • le prestazioni della macchina: se trascorrono 500 ms. per generare ogni pagina, non puoi fare nulla per ridurre questo ritardo.

Se, nonostante le tue richieste, tali siti Web non sono in grado di fornire un modo conveniente per accedere ai propri dati, ma ti danno un consenso scritto per analizzare il loro sito web, quindi profila il tuo codice per determinare il collo di bottiglia. Potrebbe essere la velocità di internet. Potrebbe essere la tua query sul database. Potrebbe essere qualsiasi cosa.

Ad esempio, potresti scoprire che passi troppo tempo a trovare con le espressioni regolari le informazioni rilevanti nel codice HTML ricevuto. In tal caso, vorrai interrompere facendo errori e usa un parser invece delle espressioni regolari, quindi vedi come questo migliora le prestazioni.

Potresti anche scoprire che il collo di bottiglia è il tempo che il server remoto spende per generare ogni pagina. In questo caso, non c'è niente da fare: potresti avere il server più veloce, la connessione più veloce e il codice più ottimizzato, le prestazioni saranno le stesse.

Fai le cose in parallelo:

Ricorda di usare il calcolo parallelo con saggezza e di profilare sempre quello che stai facendo, invece di fare un'ottimizzazione prematura, nella speranza che tu sia più intelligente del profiler.

Soprattutto quando si tratta di usare la rete, potresti essere molto sorpreso. Ad esempio, potresti credere che fare più richieste in parallelo sarà più veloce, ma come spiega Steve Gibson nell'episodio 345 di Sicurezza ora , questo non è sempre il caso.

Aspetti legali

Si noti inoltre che la schermatura dello schermo è esplicitamente vietata dalle condizioni di utilizzo (come su IMDB) su molti siti Web. E se non viene detto nulla su questo argomento in condizioni di utilizzo, ciò non significa che puoi schermare questi siti web.

Il fatto che le informazioni siano disponibili pubblicamente su Internet non ti dà il diritto di copiarle e riutilizzarle in questo modo neanche.

Perché? potresti chiedere Per due motivi:

  • La maggior parte dei siti Web si basa su pubblicità e marketing. Quando le persone utilizzano direttamente uno di questi siti Web, sprecano parte della larghezza di banda della CPU / rete del sito Web, ma in risposta, possono fare clic su un annuncio o acquistare qualcosa venduto sul sito web. Quando esegui lo screen scrap, il tuo bot spreca la larghezza di banda della CPU / della rete, ma non farà mai clic su un annuncio o comprerà qualcosa.

    La visualizzazione delle informazioni sullo schermo che hai scartato sul tuo sito web può avere effetti ancora peggiori. Esempio: in Francia, ci sono due principali siti Web che vendono hardware. Il primo è facile e veloce da usare, ha un bel design visivo, un SEO migliore e, in generale, è molto ben fatto. Il secondo è uno schifo, ma i prezzi sono più bassi. Se si esegue uno screening su di essi e si forniscono i risultati non elaborati (prezzi con collegamenti) ai propri utenti, essi ovviamente selezionano ogni volta il prezzo più basso, il che significa che il sito con un bel design avrà meno possibilità di vendere i prodotti.

  • Le persone si sono prodigate nella raccolta, nell'elaborazione e nella visualizzazione di alcuni dati. A volte pagavano per averlo. Perché apprezzerebbero vederti estrarre questi dati comodamente e gratuitamente?

risposta data 25.03.2012 - 08:46
fonte

Leggi altre domande sui tag