【问题标题】:Run Scrapy -o JSON From Separate Script从单独的脚本运行 Scrapy -o JSON
【发布时间】:2020-11-20 04:32:18
【问题描述】:

我有一个 python3 脚本,我在其中调用 2 个 scrapy 蜘蛛在代码中的某个位置输出一个 JSON 文件。 目前我正在通过运行 bat 脚本来执行此操作,如下所示:

subprocess.call(["scrapy.bat"])

蝙蝠脚本:

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

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

【问题讨论】:

    标签: python json python-3.x scrapy


    【解决方案1】:

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

    在我的 python 文件中,我可以导入蜘蛛并使用 CrawlerProcess 运行它

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

    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 的文档中有一些关于此的信息:https://docs.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script

    【讨论】:

    • 啊,有道理!我如何将结果输出到 JSON 文件?
    • FEED_FORMATFEED_URI 添加到CrawlerProcess 的设置中。我已经更新了答案
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 2014-03-06
    • 2011-09-23
    • 1970-01-01
    • 2014-03-18
    • 2017-05-16
    • 1970-01-01
    • 2012-11-06
    相关资源
    最近更新 更多