2017-02-06 7 views
0

Mein Crawler würde manchmal arbeiten -crawls und kratzt aber manchmal nur kriecht und würde nichts kratzen ohne mich etwas am Code ändern:/Ich verstehe nicht. Es gibt keinen Fehlercode oder irgendetwas. Es sieht so aus, wenn es nicht kratzen wird;Scrapy Crawler instabil, manchmal funktioniert manchmal nicht

2017-02-05 23:52:00 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.amazon.com/s/srs=9187220011&rh=n%3A283155> (referer: None) 
2017-02-05 23:52:00 [scrapy.core.engine] INFO: Closing spider (finished) 
2017-02-05 23:52:00 [scrapy.statscollectors] INFO: Dumping Scrapy stats: 
{'downloader/request_bytes': 712, 
'downloader/request_count': 2, 
'downloader/request_method_count/GET': 2, 
'downloader/response_bytes': 3964, 
'downloader/response_count': 2, 
'downloader/response_status_count/200': 2, 
'finish_reason': 'finished', 
'finish_time': datetime.datetime(2017, 2, 6, 5, 52, 0, 552000), 
'log_count/DEBUG': 7, 
'log_count/INFO': 7, 
'log_count/WARNING': 1, 
'response_received_count': 2, 
'scheduler/dequeued': 1, 
'scheduler/dequeued/memory': 1, 
'scheduler/enqueued': 1, 
'scheduler/enqueued/memory': 1, 
'start_time': datetime.datetime(2017, 2, 6, 5, 51, 59, 328000)} 

Ich versuche, diese Website zu kratzen und es in mongodb mit mongodb Pipeline setzen. Wie es tatsächlich funktioniert, aber irgendwann wird es nicht funktionieren, es ist ziemlich komisch. Ich denke, dass dies Pipelineproblem sein könnte, aber nicht sicher .. Irgendwelche Vorschläge? Wie kann ich überprüfen, was falsch ist? Ich bin mit mongodb verbunden, so wie ich das tun mongod läuft

Das ist meine mongodbpipeline;

Antwort

0

Sir Sie kratzen Amazon, eine sehr berühmte und Anti-Crawler-Website.

Es ist manchmal weil sie Ihnen Antwort senden, aber manchmal zeigen sie nur Captcha aufgrund der kontinuierlichen Anfragen und nicht der eigentlichen Webseite.

Sie müssen Proxys verwenden, um Amazon reibungslos zu scrappen, und sogar mit Proxies werden Sie viele Captchas sehen, aber Sie müssen die URLs erneut versuchen, für die Sie Captcha hatten.

Sie können dieses Stück Code verwenden, um zu sehen, ob ein Captcha in der Seite vorhanden ist.

+0

Ich benutze bereits Proxies, ich habe 5 einzelne Proxies und ich wählte zufällig für jede Anfrage. Wie kann ich die URLs behalten, die Captcha erhalten haben? Wie ist es sowieso, das im Logbuch zu sehen? Danke –

+0

RETRY_TIMES = 5 # Retry auf den meisten Fehlercodes da Proxies aus verschiedenen Gründen fehlschlagen RETRY_HTTP_CODES = [500, 503, 504, 400, 403, 404, 408] DOWNLOADER_MIDDLEWARES = { ‚scrapy.downloadermiddlewares.useragent. UserAgentMiddleware ': Keine, ' scrapy_fake_useragent.middleware.RandomUserAgentMiddleware: 400, 'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90, 'scrapy_proxies.RandomProxy': 100, 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110 , } PROXY_LIST = 'list.txt' –

+0

ist es einer der http-Codes oben? Wenn ich einen von denen bekomme ich versuche, aber ich denke Captcha ist anders –

Verwandte Themen