python - 使用 Scrapy 和 Crochet 库记录到文件
问题描述
我正在从脚本运行Scrapy,使用钩针库来阻止代码。现在我正在尝试将日志转储到文件中,但STDOUT
由于某种原因它开始将日志重定向到。我在脑海中怀疑Crochet
图书馆,但到目前为止我没有任何线索。
- 如何调试此类问题?请与我分享您的调试技巧。
- 如何修复它以便将日志转储到文件中?
import logging
import crochet
import scrapy
from scrapy import crawler
from scrapy.utils import log
crochet.setup()
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['https://blog.scrapinghub.com']
def parse(self, response):
for idx, title in enumerate(response.css('.post-header>h2')):
if idx == 10:
return
logging.info({'title': title.css('a ::text').get()})
@crochet.wait_for(timeout=None)
def crawl():
runner = crawler.CrawlerRunner()
deferred = runner.crawl(BlogSpider)
return deferred
log.configure_logging(settings={'LOG_FILE': 'my.log'})
logging.info("Starting...")
crawl()
解决方案
唯一需要的是将log settings
也传递给CrawlerRunner
。
import logging
import crochet
import scrapy
from scrapy import crawler
from scrapy.utils import log
crochet.setup()
class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['https://blog.scrapinghub.com']
def parse(self, response):
for idx, title in enumerate(response.css('.post-header>h2')):
if idx == 10:
return
logging.info({'title': title.css('a ::text').get()})
@crochet.wait_for(timeout=None)
def crawl():
runner = crawler.CrawlerRunner(settings=log_settings)
deferred = runner.crawl(BlogSpider)
return deferred
log_settings = {'LOG_FILE': 'my.log'}
log.configure_logging(settings=log_settings)
logging.info("Starting...")
crawl()
推荐阅读
- python - Selenium Python单击“关闭”按钮后如何检查表单创建是否已关闭
- python - 如何在没有numpy的情况下制作随机矩阵
- python - OSError: [E053] 运行 pyresparser 包时
- firebase - 类型转换错误从 Firebase 检索数据
- node.js - 使用 SSL 时 nginx、node 和 vue 出现 cors 错误
- python - Lambda 函数:了解 lambda 函数?
- python - 我无法从多索引数据框中的日期时间中选择行
- r - R knit to HTML,这是错误错误:pandoc.exe:
- karate - 我们如何使用 Java API 在功能文件中使用 @tag 调用特定场景?
- mysql - 如何避免关系查询显示 404?