2017-02-06 15 views
0

Мой искатель будет работать иногда - сканирует и царапины, но иногда просто сканирует и не царапает что-либо без меня что-либо меняет код:/Я не понимаю. Код ошибки отсутствует. Это выглядит так, когда он не скрежет;Scraw crawler нестабилен, иногда работает иногда не будет

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)} 

Я пытаюсь очистить этот сайт и поместить его в монгодб, используя трубопровод mongodb. Как и на самом деле работает, но когда-нибудь это не сработает, это довольно странно. Я думаю, что это может быть проблема с конвейером, но не уверен. Любые предложения? Как я могу проверить, что случилось. Я подключен к mongodb, как, как я делаю этот mongod работает

Это моя mongodbpipeline;

class MongoDBPipeline(object): 

    def __init__(self): 
     connection = pymongo.MongoClient(
      settings['MONGODB_SERVER'], 
      settings['MONGODB_PORT'] 
     ) 
     db = connection[settings['MONGODB_DB']] 
     self.collection = db[settings['MONGODB_COLLECTION']] 

    def process_item(self, item, spider): 
     valid = True 
     for data in item: 
      if not data: 
       valid = False 
       raise DropItem("Missing {0}!".format(data)) 
     if valid: 
      self.collection.insert(dict(item)) 
      log.msg("link added to MongoDB database!", 
        level=log.DEBUG, spider=spider) 
     return item 

ответ

0

Сэр, вы соскабливаете Amazon, очень известный и анти-гусеничный сайт.

Это потому, что иногда они посылают вам ответ, но иногда они просто показывают капчу из-за постоянных запросов, а не фактической веб-страницы.

Вам нужно будет использовать прокси, чтобы очистить Amazon плавно, и даже с прокси вы увидите много капчей, но вам придется повторить те URL-адреса, для которых вы получили капчу.

Вы можете использовать этот кусок кода, чтобы узнать, есть ли у вас код captcha.

if Selector(response).css('#captchacharacters').extract()[0]: 
     print("Captcha found ") 
+0

Я уже пользуюсь прокси-серверами, у меня есть 5 отдельных прокси, и я случайно выбрал один для каждого запроса. Как я могу отслеживать URL-адреса, которые получили капчу? вроде бы есть, чтобы увидеть это в журнале. Спасибо –

+0

RETRY_TIMES = 5 # Retry на большинстве кодов ошибок, так как прокси терпят неудачу по разным причинам RETRY_HTTP_CODES = [500, 503, 504, 400, 403, 404, 408] DOWNLOADER_MIDDLEWARES = { «scrapy.downloadermiddlewares.useragent. не UserAgentMiddleware ': None, '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

Это один из http-кодов выше? Если я получаю один из тех, что я делаю, повторю, но я думаю, что у меня есть другой код –

 Смежные вопросы

  • Нет связанных вопросов^_^