2016-08-13 2 views
1

Ich möchte etwa 4 Millionen Seiten mit Scrapy crawlen. Ich benutze storm proxies. Lets sagen Anzahl der Threads auf meinem Konto erlaubt ist 20. möchte ich fragen -Multithreading in Scrapy mit Proxies

Ist Multithreading bedeutet CONCURRENT_REQUESTS_PER_DOMAIN, in scrapy.

oder es gibt eine andere Möglichkeit, das zu tun.

Wie kann ich effektiv diese 20 Threads verwenden

HINWEIS - Im Fall, dass ich mit meiner Frage nicht klar bin, lassen Sie einen Kommentar, und ich werde versuchen, nach dem, zu erarbeiten.

+0

Hallo Sagar, Können Sie bitte Ihre scrapy Storm Proxy Middleware teilen? Ich bin daran interessiert, etwas ähnliches zu tun. – rolele

Antwort

1

gerade aus dem Text & Tabellen:

CONCURRENT_REQUESTS - Die maximale Anzahl von gleichzeitigen Anforderungen, die durch den Downloader Scrapy durchgeführt wird (dh gleichzeitige.).

CONCURRENT_REQUESTS_PER_DOMAIN - Die maximale Anzahl von gleichzeitigen (dh gleichzeitige) Anfragen, die zu einer einzelnen Domäne ausgeführt werden.

CONCURRENT_REQUESTS_PER_IP - Die maximale Anzahl gleichzeitiger (dh gleichzeitiger) Anforderungen, die an einer einzelnen IP-Adresse ausgeführt werden. Wenn ungleich Null ist, wird die Einstellung CONCURRENT_REQUESTS_PER_DOMAIN ignoriert, und wird stattdessen verwendet. Mit anderen Worten, Parallelitätsgrenzwerte werden pro IP angewendet, nicht pro Domäne.

Beantwortung Ihrer Frage direkt

Ich vermute, dass dieser Dienst nur wir an, Sie insgesamt bis 20 Fäden zusammenkratzen, ist es nicht egal was bedeutet, was Sie fordern, so sollten Sie CONCURRENT_REQUESTS Satz auf maximal 20 verwenden (default ist 16).

Jede Anfrage ist "Art von einem Thread". Es ist auf Twisted gebaut. In den Augen des Proxy-Service, den Sie verwenden, gibt es keine Möglichkeit, den Unterschied zu erkennen, so dass jede Anfrage ein Proxy-Thread sein wird!

+0

Danke! Können Sie sagen, wie könnte ich 2 Millionen Anfrage an einem Tag machen, einige Best Practices können sein, kann ich derzeit 40000 Anfrage mit Proxies machen – sagar

+0

Haben Sie eine Möglichkeit zu überwachen, wie viele Threads zu einem bestimmten Zeitpunkt geöffnet sind ? In dem Proxy-System –

+0

nicht wirklich, ich hatte eine Middleware verwendet und request.meta [proxy] = Proxy (die sie mir zur Verfügung gestellt) – sagar