Есть ли в scrapy способ получить текущую очередь запросов или построить ее динамически, используя scrapy?
У меня есть вариант использования: у меня есть страница со списком товаров, и на этой странице есть несколько фильтров. Эти фильтры приводят к разным URL-адресам (из-за разных строк запроса), но на самом деле перечисленные продукты совпадают. Поэтому я хочу сначала получить все URL-адреса для всех продуктов, используя различные фильтры, а затем удалить дубликаты на самом уровне паука и добавить метаданные к запросу о фильтрах, которые приводят к одному и тому же продукту.
Таким образом, я могу идентифицировать дубликаты без фактического анализа страницы продукта, а также связать метаданные с элементом.
Псевдокод того, чего я хочу достичь:
def parse(self, response):
filter_pages = for all filter links present on the page download/request the filtered page
all_urls = []
for filter in filter_pages:
url = scrape url for all product/item links
all_urls.append(url)
for url in all_urls:
filter_tags = identify duplicates in all_urls (based on the product id present in query string) and returns csv filters that resulted in duplicates.
request = Request(url, callback = self.parseItem)
request.meta['tag'] = filter_tags
yield request