Scrapy DEPTH_PRIORITY不起作用

时间:2016-03-17 14:52:49

标签: python web-scraping scrapy scrapyd

我希望我的Spider完全抓取start_urls网站,然后再深入了解这些网站。

抓取工具旨在查找过期的域名。

例如,我创建了一个包含500个网址(450个过期和50个actif网站)的网页,抓取工具必须在跟踪之前在每个网址中插入数据库。

实际上,抓取工具会关闭第一个网站并停止抓取start_urls网站。

这是我的配置:

self.custom_settings = {
    'RETRY_ENABLED': False,
    'DEPTH_LIMIT' : 0,
    'DEPTH_PRIORITY' : 1,
    'CONCURRENT_REQUESTS_PER_DOMAIN' : 64,
    'CONCURRENT_REQUESTS' : 128,
    'REACTOR_THREADPOOL_MAXSIZE' : 30,
}

设置:

SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'
LOG_LEVEL = 'INFO'
DUPEFILTER_CLASS = 'dirbot.custom_filters.BLOOMDupeFilter'

抓取者:

rules = (
    Rule(LxmlLinkExtractor(allow=('.com', '.fr', '.net', '.org', '.info', '.casino', '.co'),
        deny=('facebook', 'amazon', 'wordpress', 'blogspot', 'free')),
        callback='parse_obj',
        process_request='add_errback',
        follow=True),
)

def add_errback(self, request):
    return request.replace(errback=self.errback_httpbin)

def errback_httpbin(self, failure):
    if failure.check(DNSLookupError):
        request = failure.request
        ext = tldextract.extract(request.url)
        domain = ext.registered_domain
        if domain != '' :
            self.checkDomain(domain)

1 个答案:

答案 0 :(得分:0)

需要将

custom_settings定义为类属性,以替换settings.py上的实际设置。