【发布时间】:2016-03-17 14:52:49
【问题描述】:
我希望我的 Spider 在更深入地关注这些网站之前完全爬取 start_urls 网站。
爬虫旨在查找过期域。
例如,我创建了一个包含 500 个 url(450 个过期网站和 50 个活动网站)的页面,爬虫必须在跟随之前将每个 url 插入数据库。
实际上爬虫会跟随第一个活着的网站并停止爬取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)
【问题讨论】:
-
如果在
settings.py文件中指定设置会发生什么?只是为了测试,我认为custom_settings需要是一个类属性,请确认直接在settings.py上分配。 -
你想把 custom_settings 放在 settings.py 上吗?我认为当我的蜘蛛启动时我的 custom_settings 已经被读取。
-
你说得对!我已经更改了 self.custom_settings 的位置,现在一切正常。
-
希望对我有所帮助,然后我会添加答案
标签: python web-scraping scrapy scrapyd