Scrapy memiliki gagasan tentang Item Pipelines yang secara bersamaan memproses (melalui Twisted) item yang dikembalikan dari Laba-laba. Contoh kode berikut disediakan untuk memfilter item duplikat (kode disalin di bawah). Bagaimana caranya agar set
dapat digunakan dengan aman melalui panggilan bersamaan ke process_item
? Tampaknya Scrapy memanggil saluran item di sini .
from scrapy.exceptions import DropItem
class DuplicatesPipeline:
def __init__(self):
self.ids_seen = set()
def process_item(self, item, spider):
if item['id'] in self.ids_seen:
raise DropItem("Duplicate item found: %s" % item)
else:
self.ids_seen.add(item['id'])
return item