寫完我的回答後,我重新閱讀你的問題,我發現你想要什麼與記錄沒有任何關係,但它是關於不寫入(默認ish).jl
提要(也許更新標題爲:「禁用scrapyd項目存儲「)。要覆蓋scrapyd的默認,只需設置FEED_URI
爲空字符串是這樣的:
$ curl http://localhost:6800/schedule.json -d project=tutorial -d spider=example -d setting=FEED_URI=
對於誰是尋找到日誌別人......讓我們看一個例子。我們做平常:
$ scrapy startproject tutorial
$ cd tutorial
$ scrapy genspider example example.com
然後編輯tutorial/spiders/example.py
包含以下內容:
import scrapy
class TutorialItem(scrapy.Item):
name = scrapy.Field()
surname = scrapy.Field()
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = (
'http://www.example.com/',
)
def parse(self, response):
for i in xrange(100):
t = TutorialItem()
t['name'] = "foo"
t['surname'] = "bar %d" % i
yield t
注意跑步的區別是:通過嘗試
$ scrapy crawl example
# or
$ scrapy crawl example -L DEBUG
# or
$ scrapy crawl example -s LOG_LEVEL=DEBUG
和
$ scrapy crawl example -s LOG_LEVEL=INFO
# or
$ scrapy crawl example -L INFO
這樣的組合在蜘蛛上確認它不會打印調試以外的日誌級別的項目信息。
現在是時候,你部署到scrapyd後做完全一樣的:
$ curl http://localhost:6800/schedule.json -d setting=LOG_LEVEL=INFO -d project=tutorial -d spider=example
,該日誌不包含的項目當您運行確認:
注意如果您的項目仍以INFO級別打印,則可能意味着您的代碼或某個管道正在打印它。您可以進一步提高日誌級別和/或調查並找到打印並刪除它的代碼。
我希望你的建議有效。但事實並非如此。我試過LOG_LEVEL = WARN。它沒有任何區別。這是如何設置另一個設置比設置文件中的日誌級別? – Pullie
太奇怪了,它不起作用。我現在會試試:) – neverlastn
順便使用docker做得很好。我不清楚你如何使用抓取的數據,但是一般來說,在抓取完成後批量上傳「Item」,而不是在某些物品管道中抓取時執行此操作。這是'.jl'文件背後的概念。你會鉤住'spider_closed'信號並使用批量工具上傳這個'.jl'文件。但也有一些罕見的情況,例如您希望最小延遲的情況,建議/不可能這樣做。 – neverlastn