Domanda

Ho appena iniziato a pensare la creazione e la personalizzazione di un web crawler di oggi, e di sapere molto poco su web crawler/robot galateo.La maggioranza degli scritti sul galateo, ho trovato sembrare vecchio e scomodo, quindi mi piacerebbe avere un po ' di corrente (e pratico) approfondimenti dal web community di sviluppatori.

Voglio usare un crawler in piedi sul "web", per un super semplice scopo - "il markup del sito XYZ soddisfano la condizione di ABC?".

Questo solleva un sacco di domande per me, ma credo che le due questioni principali che ho bisogno di ottenere fuori del modo prima sono:

  • Si sente un po ' "incerto" dal go get -- è questa sorta di cosa accettabile?
  • In concreto, quali considerazioni il crawler prendere per non infastidire la gente?
È stato utile?

Soluzione

Obbedire robots.txt (e non troppo aggressiva come è già stato detto).

Si potrebbe desiderare di pensare alla tua stringa user-agent - sono un ottimo posto per essere up-front su quello che stai facendo e di come si può essere contattati.

Altri suggerimenti

Oltre WillDean e Einar bene le risposte, vorrei davvero consiglia di prendere un momento per leggere il significato dei codici di risposta HTTP, e che cosa il vostro crawler dovrebbe fare durante l'incontro di ciascuno, dal momento che farà una grande differenza di prestazioni, e se o non sei bannato da alcuni siti.

Alcuni link utili:

HTTP/1.1:Definizioni Dei Codici Di Stato

Aggregatore di client HTTP prove

Wikipedia

Si prega di essere sicuri di includere un URL nella stringa agente utente che spiega chi/cosa/perché il vostro robot è la ricerca per indicizzazione.

Tutti i buoni punti, quelle fatte qui.Si avrà anche a che fare con, generato dinamicamente, Java e JavaScript collegamenti, i parametri e gli Id di sessione, in fuga virgolette singole e doppie, di tentativi falliti, al relativo link (usando ../../ per andare oltre la directory root), maiuscole e minuscole, cornici, reindirizzamenti, biscotti....

Potrei andare avanti per giorni, e un pò sono.Ho un Robot Lista Di Controllo che copre più di questo, e io sono felice di rispondere a quello che mi è possibile.

Si dovrebbe anche pensare di usare open-source robot crawler codice, perché ti dà un enorme vantaggio su tutti questi problemi.Ho una pagina così: open source robot codice.Speranza che aiuta!

Inoltre, non dimenticare di obbedire il bot meta tags: http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

Un'altra cosa a cui pensare - quando spider pagine, non essere troppo frettoloso decidere cose che non esistono, o sono errori.Alcune pagine sono offline a causa di lavori di manutenzione o di errori che vengono corretti entro un breve periodo.

Direi che è molto importante considerare la quantità di carico che si stanno causando.Per esempio, se il vostro crawler richieste di ogni oggetto di un unico sito, più o meno in una volta, potrebbe causare problemi di caricamento di un sito in particolare.

In altre parole, assicurarsi che il crawler non è troppo aggressivo.

È perfettamente accetable fare - solo assicurarsi che si visita solo ogni pagina una volta per ogni sessione.Come sei tecnicamente la creazione di un searchbot si deve obbedire robots.txt e no-cache regole.Le persone possono ancora bloccare il bot in particolare, se necessario, dal blocco degli ip.

Stai solo cercando di codice sorgente, per quanto posso dire, quindi ti consigliamo di costruire qualcosa per seguire <link>s per i fogli di stile e <script src="..."></script> per Javascript.

Il carico è una grande considerazione.Mettere limiti su come spesso la ricerca per indicizzazione di un sito particolare e, cosa più informazioni di base di cui avete bisogno per realizzare il vostro obiettivo.Se siete alla ricerca per il testo non scaricare tutte le immagini, e cose simili.

Naturalmente obbedire robots.txt ma inoltre, assicurarsi che la stringa agente utente include accurate informazioni di contatto e magari un link a una pagina web che descrive ciò che si sta facendo e come farlo.Se un web admin è vedere un sacco di richieste da voi ed è curioso che si potrebbe essere in grado di rispondere a un sacco di domande con un'informativa pagina web.

Sarà necessario aggiungere alcune funzionalità per una lista nera di siti / domini o altre cose (intervalli di indirizzi IP, ASN, ecc) per evitare che il tuo ragno impantanarsi con i siti di spam.

Avrete bisogno di avere un HTTP attuazione con un sacco di controllo su di timeout e di comportamento.Aspettatevi un sacco di siti per inviare le risposte non valide, enorme risposte, rifiuti intestazioni, o semplicemente lasciare aperta la connessione a tempo indeterminato con nessuna risposta etc.

Inoltre non fidarti di stato 200, significa "la pagina esiste".Buona parte dei siti di inviare indietro di 200 "Non trovato" o altri errori, nella mia esperienza (Insieme con un ampio documento HTML).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top