在scrapy中控制深度参数

时间:2013-12-13 23:49:22

标签: python scrapy

我有以下代码:

#import necessary packages
 import os
 from scrapy.selector import Selector
 from scrapy.contrib.exporter import CsvItemExporter
 from scrapy.item import Item, Field
 from scrapy.settings import Settings
 from scrapy.settings import default_settings 
 from selenium import webdriver
 from urlparse import urlparse
 import csv    
 from scrapy.contrib.spiders import CrawlSpider, Rule
 from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
 from scrapy import log

#set maximum DEPTH_LIMIT to 3
 default_settings.DEPTH_LIMIT = 3
  .....
  .....
  .....

蜘蛛工作得很漂亮,但由于某种原因,它会进入深度大于3的地方。我如何限制深度,以便蜘蛛不会进入深度大于3的地点?如上所示,我试图以自己的方式控制深度,但它不起作用....谢谢。

2 个答案:

答案 0 :(得分:2)

对于新版本,请使用

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'DEPTH_LIMIT': '3',
    }

答案 1 :(得分:1)

我不认为像你一样覆盖默认设置的方式是正确的。常见的方法是:

from scrapy.conf import settings


class MySpider(SOMESPIDER):

    def __init__(self):
        ......
        settings.overrides['DEPTH_LIMIT'] = 3
        ......

还有其他方法可以覆盖设置。 Doc是here

我已经调查了scrapy的一些源代码并且抱歉我无法告诉scrapy如何使用其设置是从默认设置还是从用户设置。但是下面的源代码会帮你一个忙,它会显示scrapy用来覆盖默认设置的正确方法:here