我开发了一个Scrapy蜘蛛,我想在不使用命令行的情况下执行它。这就是我使用
CrawlerProcess
的原因。我还希望将输出保存到 json 文件中。 Feed 导出器 在我的情况下是完美的,我能让它们工作的唯一方法就是通过这种方式更新设置:
from scraper.spiders.pp_spider import ConverterSpider
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
settings.set('FEED_FORMAT', 'json')
settings.set('FEED_URI', 'result.json')
process = CrawlerProcess(settings)
process.crawl(ConverterSpider)
process.start()
现在我想在执行新的爬网时覆盖输出文件 result.json 。您通常执行的方式不适用于 CrawlerProcess(示例):
FEEDS = {
'result.json': {'format': 'json', 'overwrite': True}
}
我想知道如何做这样的事情:
settings.set('overwrite', True)
我的爸爸,解决方案非常简单(如 wRAR 建议的那样):
settings = get_project_settings()
settings['FEEDS'] = {
'result.json': {'format': 'json', 'overwrite': True}
}
process = CrawlerProcess(settings)