2016-02-22 2 views
0

Я пытаюсь использовать Scrapy для записи каждой ссылки, которая встречается внутри сайта. Я использую SitemapSpider, но просмотр результирующего CSV показывает, что Spider никогда не достигает глубины более 1 - я хочу, чтобы он следил за каждой связью, с которой он сталкивается, и очищает ссылки от них. Ограничение по глубине должно быть неограниченным по умолчанию, но я добавил DEPTH_LIMIT из 5 в settings.py в качестве теста, и это не повлияло.Как заставить Scrap's SitemapSpider выполнять сканирование на глубину более 1?

(Кроме того, «other_urls» условие кажется, не имеет никакого эффекта - никаких результатов с этого URL не отображаются в формате CSV.)

import scrapy 
from tutorial.items import fffItem 
from scrapy.spiders import SitemapSpider 

class fffSpider(SitemapSpider): 
    name = "fff_sitemap" 
    sitemap_urls = ["http://fff.com/sitemap.xml"] 
    other_urls = ["http://www.fff.com/fff/default.aspx"] 


    def parse(self, response): 
     items = [] 
     for sel in response.xpath('//a'): 
      item = fffItem() 
      item['link'] = sel.xpath('@href').extract() 
      item['sourceurl'] = response.url 
      item['depth'] = response.meta['depth'] 
      items.append(item) 
     return items 

Я довольно новыми для Scrapy/Python в целом, и посмотрел на ответные вопросы, связанные с SitemapSpider, но они либо не применялись, либо я не полностью их понимал. Извините, если это повторение.

ответ

0

Что вы ищете, это sitemap_follow аргумент класса.
По умолчанию соблюдаются все ссылки на карту сайта, поэтому максимальная глубина.