У меня проблемы с проверкой существующих данных в скрапе.я использовал эластичный поиск в качестве базы данных ниже кода, который я пытаюсь выполнить ??
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", даже если он дублируется из-завалидация, которую я поставил выше, не работает.
, но если я запускаю это снова с теми же данными, валидация работает. Поэтому, пожалуйста, любой может помочь в этом.