Проверка базы данных не работает в течение цикла - PullRequest
0 голосов
/ 14 февраля 2019

У меня проблемы с проверкой существующих данных в скрапе.я использовал эластичный поиск в качестве базы данных ниже кода, который я пытаюсь выполнить ??

def checkIfURLExistsInCrawler(single_url):
    elastic_query = json.dumps({
       "query": {
              "match_phrase": {
                       "url": single_url
               }
        }
    })

    result = es.search(index='test', doc_type='test', body=elastic_query)['hits']['hits']
    return result

def start_requests(self):
    urls = [

    # here i have some url there might be chance 
    # that some urls are duplicate so i have to put 
    # validation but in for loop it doesn't working  

    ]

    for request_url in urls:
        checkExists = self.checkIfURLExistsInCrawler(request_url)

        if not checkExists :
            beingCrawledUrl = {}
            beingCrawledUrl['url'] = single_url
            beingCrawledUrl['added_on'] = now.strftime("%Y-%m-%d %H:%M:%S")
            json_data = json.dumps(beingCrawledUrl)
            InsertData = es.index(index='test', doc_type='test', body=json.loads(json_data))
            yield scrapy.Request();

, если я выполняю этот код, все записи внутри URL = [] вставляются в индекс "test", даже если он дублируется из-завалидация, которую я поставил выше, не работает.

, но если я запускаю это снова с теми же данными, валидация работает. Поэтому, пожалуйста, любой может помочь в этом.

...