2016-08-18 4 views
1

Scrapy указывает, что у него есть DEPTH_LIMIT setting, но конкретно не говорит, что он считает «глубиной». С точки зрения очищающих страниц я видел, что «глубина» относится к «глубине url», или http://somedomain.com/this/is/a/depth/six/url, где страница, запрашиваемая этим URL-адресом, имеет глубину «шесть», потому что она состоит из шести сегментов. http://somedomain.com глубина равна нулю.Что именно означает DEPTH_LIMIT? Является ли текущая глубина ссылочной?

С другой стороны, когда мы рассматриваем выскабливание в терминах деревьев, глубина более вероятно относится к тому, насколько далеко вы находитесь от исходного местоположения. Таким образом, если я подаю ему начальный url http://somedomain.com/start/here, то есть глубина нуля, и любая ссылка, найденная в этом ответе, будет глубиной.

Использует ли Scrapy одно из этих определений? Если да, то какой? Если это последний (что представляется более логичным), есть ли какой-либо способ получить эту информацию глубины, либо когда вы обрабатываете ответ в искателе, либо когда вы обрабатываете его как элемент в конвейере ?

+1

Я не уверен, что я делаю это или нет, но я думаю, что это в метаданных ... (было время, поскольку я использовал scrapy) - делает 'response.meta ['depth'] 'делать что-нибудь? И да, я думаю, что это позже из-за того, как трава проходит по дереву ... (по крайней мере, я думаю, что это DFS ... но прошло какое-то время ...) –

+0

@JonClements Да! Это именно то, что мне нужно, и доказывает теорию. Благодаря! Если вы хотите подать ответ, я соглашусь! –

+0

Ладно .. сделано ... может быть полезно другим ... надеюсь, что я не додумался - как я уже сказал, это было какое-то время ... –

ответ

1

Scrapy использует подход DFS для обхода, и текущую глубину можно получить через метаданные ответа: response.meta['depth'].