Scrapy удаление дубликатов на уровне паука - PullRequest
2 голосов
/ 28 февраля 2012

Есть ли в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...