Scrapy - фильтрация дубликатов при сборе данных об элементах с нескольких URL - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь создать быстрый сканер Scrapy для данных о недвижимости, который работает следующим образом:

Visit Page for Property A >> Scrape Some Data >> Extract Agent Profile URL >> Visit Agent Profile URL >> Scrape Some Data >> Yield Property Item with Data from Property Page & Agents Profile Page

Все работает отлично, но когда Паук посещает страницу свойств и извлекает URL профиля агента, который указывает к URL, который паук ранее уже просматривал, весь элемент свойства фильтруется как дубликат.

Запросы объединяются в цепочку, и данные собираются отлично, если я установил 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', по сути, отключив фильтр.

В действительности было бы много свойств с одними и теми же агентами, и было бы предпочтительно не чистить одну и ту же страницу профиля агента несколько раз. Следовательно, если во время сканирования страница свойств очищается и URL профиля агента уже был очищен ранее, кэшированные данные должны быть возвращены для профиля агента и элемента свойства, полученных с этими данными, а не для всего элемента свойства, отфильтрованного как дубликат.

Итак, проблема в следующем:

Property A >> Agent A > scrapes fine
Property B >> Agent A > duplicate
Property C >> Agent B > scrapes fine

Я привел несколько примеров: Свойство A и Свойство B внизу страницы, агент Office Hub и URL профиля агента: https://www.realcommercial.com.au/agency/TAJPJM для обоих, поэтому страница свойства B будет отфильтрована как дубликат. Свойство C все будет в порядке, так как Агент - Ось. Однако любые дальнейшие свойства для Axis будут отфильтрованы, так как URL профиля в этих свойствах будет таким же, как в Свойство C

start_urls моего тестового паука:

start_urls = [
        'https://pacman-public.s3-ap-southeast-2.amazonaws.com/tests/study/stackoverflow/dupetest/x-pages/for-lease/property1-agent1.html',
        'https://pacman-public.s3-ap-southeast-2.amazonaws.com/tests/study/stackoverflow/dupetest/x-pages/for-lease/property2-agent1.html',
        'https://pacman-public.s3-ap-southeast-2.amazonaws.com/tests/study/stackoverflow/dupetest/x-pages/for-lease/property4-agent2.html'
    ]

Может кто-нибудь помочь, пожалуйста, объясните, почему это происходит?

Спасибо

...