我正在使用自定义设置的scrapy蜘蛛和一些设置是得到避免,而运行蜘蛛。最重要的是'DOWNLOADER_MIDDLEWARES'
下面是蜘蛛的自定义设置
custom_settings = {
'DOWNLOADER_MIDDLEWARES': {'app.sitescrapper.sitescrapper.middlewares.RotateUserAgentMiddleware': 400,
'app.sitescrapper.sitescrapper.middlewares.ProjectDownloaderMiddleware': 543,
'app.sitescrapper.sitescrapper.selenium_middlewares.SeleniumMiddleware': 123,
},
'COOKIES_ENABLED': False,
'CONCURRENT_REQUESTS': 6,
'DOWNLOAD_DELAY': 2,
'CELERYD_MAX_TASKS_PER_CHILD' : 1,
'TELNETCONSOLE_ENABLED' : False,
'AUTOTHROTTLE_ENABLED' : True,
'LOG_LEVEL' : 'WARNING',
# Duplicates pipeline
'ITEM_PIPELINES': {'app.sitescrapper.sitescrapper.pipelines.DuplicatesPipeline': 300},
}
日志中的以下设置将被覆盖
Overridden settings:
{'AUTOTHROTTLE_ENABLED': True,
'CONCURRENT_REQUESTS': 6,
'COOKIES_ENABLED': False,
'DOWNLOAD_DELAY': 2,
'LOG_LEVEL': 'WARNING',
'TELNETCONSOLE_ENABLED': False}
管线也执行良好。如何激活'DOWNLOADER_MIDDLEWARES'
?
更新
@celery.task(name='CeleryTask.crawl')
def scrape(baseURL):
crawl_data = [baseURL]
def run_process():
process = CrawlerProcess()
process.crawl(myCrawler,category=crawl_data)
process.start()
p = p1(target=run_process)
p.start()
p.join()
Spider是以异步作业的方式运行的,而不是从命令行运行,当从CLI执行Spider时,中间件被激活。
更新2
从CLI
如果使用scrapy runspider file_name.py
,则自定义设置中的中间件被激活。但是使用scrapy crawl spider_name
,则自定义设置中的中间件不被激活。
1条答案
按热度按时间y3bcpkx11#
Overridden settings
中列出的设置:仅涵盖/scrapy/settings/default_settings.py中的设置-仅涵盖来自Scrapy的设置(不涵盖来自第三方模块的设置)
和非字典(代码)的设置-中间件将不在此处列出。
为了检查自定义
DOWNLOADER_MIDDLEWARES
、SPIDER_MIDDLEWARES
、ITEM_PIPELINES
或EXTENSIONS
,需要检查日志条目(就在overridden settings
日志条目之后:[scrapy.middleware] Enabled extensions:...
[scrapy.middleware] Enabled downloader middlewares:
[scrapy.middleware] Enabled spider middlewares:
[scrapy.middleware] Enabled item pipelines:
如果自定义中间件连接正确-自定义中间件将在列表中。(如果不正确-可能是路径问题)