Python 从单独的脚本运行Scrapy-osjson

Python 从单独的脚本运行Scrapy-osjson,python,json,python-3.x,scrapy,Python,Json,Python 3.x,Scrapy,我有一个python3脚本,在这个脚本中,我调用2个scrapy spider在代码中的某个点输出一个JSON文件。 目前,我正在运行bat脚本,如下所示: subprocess.call([“scrapy.bat”]) Bat脚本: cd C:\Python\crawler\crawler\spiders scrapy crawl project1 -o project1.json scrapy crawl project2 -o project2.json 我想知道是否可以在python脚

我有一个python3脚本,在这个脚本中,我调用2个scrapy spider在代码中的某个点输出一个JSON文件。 目前,我正在运行bat脚本,如下所示:

subprocess.call([“scrapy.bat”])

Bat脚本:

cd C:\Python\crawler\crawler\spiders
scrapy crawl project1 -o project1.json
scrapy crawl project2 -o project2.json

我想知道是否可以在python脚本中执行完全相同的操作而不使用bat脚本。

是的,可以从单独的python脚本运行spider:

在我的python文件中,我可以导入spider并使用
CrawlerProcess

示例:假设我的
RedditSpider
位于另一个名为
test_reddit.py
的Python文件中,该文件与我的Python脚本位于同一目录中。我只需要添加下面的代码来运行spider:

from scrapy.crawler import CrawlerProcess

from test_reddit import RedditSpider

if __name__ == "__main__":
    c = CrawlerProcess({
        'USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
        'FEED_FORMAT': 'json',
        'FEED_URI': 'results.json'
    })
    c.crawl(RedditSpider)
    c.start()


在Scrapy的文档中有一些关于这方面的信息:

Ahh很有意义!如何将结果输出到JSON文件?将
FEED\u FORMAT
FEED\u URI
添加到
CrawlerProcess
的设置中。我已经更新了答案