2

スクリプトで呼び出されているクローラーの設定を上書きしようとしていますが、これらの設定は有効にならないようです:

from scrapy import log
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from someproject.spiders import SomeSpider

spider = SomeSpider()
overrides = {
    'LOG_ENABLED': True,
    'LOG_STDOUT': True,
}
settings = get_project_settings()
settings.overrides.update(overrides)
log.start()
crawler = CrawlerProcess(settings)
crawler.install()
crawler.configure()
crawler.crawl(spider)
crawler.start()

そしてスパイダーで:

from scrapy.spider import BaseSpider

class SomeSpider(BaseSpider):

    def __init__(self):
        self.start_urls = [ 'http://somedomain.com' ]

    def parse(self, response):
        print 'some test' # won't print anything
        exit(0) # will normally exit failing the crawler

LOG_ENABLEDとを定義することでLOG_STDOUT、「何らかのテスト」文字列がログに出力されることを期待しています。LOG_FILEまた、試した他の設定の中でログをリダイレクトできないようです。

私は何か間違ったことをしているに違いありません...助けてください。=D

4

2 に答える 2

0

クローラーを開始した後、Twisted のリアクターを開始する必要がある場合があります。

from twisted.internet import reactor
#...other imports...

#...setup crawler...
crawler.start()
reactor.run()

関連する質問/その他のコード:スクリプトからの Scrapy のクロールは、常にスクレイピング後にスクリプトの実行をブロックします

于 2014-03-19T01:06:43.307 に答える
0

log.msg('some test')ログの印刷に使用

于 2013-11-08T02:57:15.513 に答える