В настоящее время работает над несколькими пауками, которые сканируют новостные статьи для URL, заголовки и т. Д. c. Это все работает нормально, и конвейер также работает, однако уникальный индекс, который я установил в моем конвейере, кажется, отбрасывает и предотвращает вход в базу данных, если одно слово совпадает с моей переменной 'title', я также пытался используйте URL-адреса в качестве переменных, но это приводит к тому, что в MongoDB практически нет записей. Например, если в двух новостных статьях есть слово «автомобиль», CLI отобразит ошибку и уронит одну, однако это должно иметь место только в том случае, если оба эти заголовка одинаковы, что будет самым простым способом реализовать это внутри конвейера? Ниже мой process_item из конвейеров scrapy.
def process_item(self, item, spider):
if item['title'] in self.titles_seen:
raise DropItem("Duplicate item found: %s" % item)
else:
self.titles_seen.add(item['title'])
self.db[self.collection_name].create_index([("title", pymongo.TEXT)], unique=True)
self.db[self.collection_name].insert(dict(item))
return item
И это пример ошибок, которые возникают в CLI при запуске сканеров.
Выход CLI из искателя
Выше, как вы можете видеть, элемент, кажется, упал из-за слова "new", появившегося в заголовке.