Я пытаюсь реализовать ту же функциональность, что и в ScreamingFrog - измерить глубину URL. Для этого я получаю доступ к параметру глубины response.meta, вот так: response.meta.get('depth', 0)
, но полученные результаты сильно отличаются от результатов ScreamingFrog. Поэтому я хотел выяснить, почему это происходит, сохранив все страницы, через которые прошел CrawlSpider, чтобы перейти на текущую страницу.
Так выглядит мой текущий паук :
class FrSpider(scrapy.spiders.CrawlSpider):
"""Designed to crawl french version of dior.com"""
name = 'Fr'
allowed_domains = [website]
denyList = []
start_urls = ['https://www.%s/' % website]
rules = (Rule(LinkExtractor(deny=denyList), follow=True, callback='processLink'),)
def processLink(self, response):
link = response.url
depth = response.meta.get('depth', 0)
print('%s: depth is %s' % (link, depth))
Вот сравнение статистики сканирования (того же сайта, ограничено первыми ~ 500 страницами) между моим сканером и screamingfrog:
Depth(Clicks from Start Url) Number of Urls % of Total
1 62 12.4
2 72 14.4
3 97 19.4
4 49 9.8
5 40 8.0
6 28 5.6
7 46 9.2
8 50 10.0
9 56 11.2
---------------------------- -------------- ----------
против

Как вы можете видеть, он сильно отличается, и расширение сканирования с первых 500 страниц до полного веб-сайта показывает огромное расхождение между двумя подходами.
Мне было интересно, может ли кто-нибудь указать мне на ошибку, которую я делаю, или помочь советом о том, как мне сохранить все страницы, пройденные сканером, чтобы попасть на текущую страницу. Визуализация будет выглядеть так: 