Python 从单独的脚本运行Scrapy-osjson
我有一个python3脚本,在这个脚本中,我调用2个scrapy spider在代码中的某个点输出一个JSON文件。 目前,我正在运行bat脚本,如下所示: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脚
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
的设置中。我已经更新了答案