2010-12-09 8 views
4

Ich werde eine Website für einige Informationen crawlen. Es ist ungefähr 170 000+ Seiten. Also, wie viele Anfragen kann ich machen? Ich werde HTML extrahieren und einige Informationen bekommen. Dies ist eine bereits sehr populäre Seite, also glaube ich nicht, dass sie sterben würde, wenn ich nur schnell über alle Seiten cruisen würde ... Einzig was mich nervös macht ist, dass ich nicht weiß, ob der Besitzer meine IP oder so etwas blockieren wird wenn du das tust? Ist das normal? Soll ich nur 5 Seiten/min laden? Dann wird es ewig dauern ... Ich will alle 24 Stunden neue Daten sehen.Wie schnell kann ich eine Website tatsächlich crawlen?

Danke für alle Antwort!

Antwort

1

Eine zweite oder zwei Verzögerung nach jeder Anfrage sollte ausreichen. Wenn du deinen Bot so schnell wie möglich crawlen lässt, kann das sogar dazu führen, dass du gebannt wirst. In meiner täglichen Arbeit verwalte ich die Seiten für ein paar Zeitungen und sehe gelegentlich selbstgewachsene Crawler. Schlechte können wirklich eine Menge Systemcode verursachen und führen zu einer neuen Ergänzung der IP-Blacklist. Sei nicht dieser Typ.

+0

Ich habe 5 IP-Adressen. Und eine riesige Liste von Useragents, die ich zufällig auswähle. Denkst du, dass sie mich stoppen, wenn jede IP-Anfrage 1page/2s anfordert? – IQlessThan70

1

Solange Sie ihre Anweisungen robots.txt befolgen, sollten Sie wahrscheinlich in Ordnung sein. Die Standardverzögerung, die ich zwischen Anfragen gesehen habe, ist 2 Sekunden - das ist ziemlich oft die Grenze, nach der Sie Ihren Verkehr möglicherweise gedrosselt oder IP blockiert haben.

+1

Ist 2 Sekunden nur eine informell vereinbarte Verzögerung oder ist sie irgendwo festgelegt? Wie soll ich eine robots.txt-Datei interpretieren, die keine Crawl-Verzögerung angibt? Bedeutet es, dass es ihnen egal ist, wie schnell ich crawle oder ist es nur in der Regel nicht angegeben? Vielen Dank! – abw333

+0

Ich glaube nicht, dass es irgendwo formell etabliert ist. Viele Systeme haben 2-Sekunden-Standardwerte eingebaut, die einen Fehler verursachen, wenn Sie unter diesen Schwellenwert gehen, auch wenn sie ihn nicht erwähnen oder nicht interessieren. – blueberryfields

+0

Ich lade oft eine Website mit mehreren Seiten gleichzeitig. Also müssen sie mich schlecht behandeln. – Azarus

5

Es wird irgendwann dauern, eigentlich schlage ich vor, dass Sie rotierende Proxies verwenden und Multi-Threading hinzufügen. 10 Fäden reichen aus. Auf diese Weise können Sie 10 Anfragen gleichzeitig haben. Die Verwendung von Proxies wird jedoch langsam sein und ein Timeout von mindestens 1,5 Sekunden für jede Anfrage hinzufügen, es wird dich verlangsamen, aber das Risiko eines Verbots verringern.

+0

+1. Ich stimme zu. Sie werden eine Reihe von Proxies dafür benötigen, und Sie müssen sicherstellen, dass Sie die Zeit zwischen dem gleichen Proxy maximieren, der den Webserver zweimal hintereinander kontaktiert. –

2

Ich habe vor ein paar Jahren einen Webcrawler erstellt, der etwa 7GB pro Nacht von der BBC-Website (begrenzt durch Bandbreite) gecrawlt und nie blockiert wurde, aber eine Verzögerung von einer Sekunde zwischen Anfragen hinzuzufügen, ist das vernünftige Ding zu tun.

Verwandte Themen