Python 在scrapy中运行多个蜘蛛

Python 在scrapy中运行多个蜘蛛,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,例如,在scrapy中,如果我有两个包含不同HTML的URL。现在我想为一个编写两个单独的spider,并想同时运行两个spider。在scrapy中,可以同时运行多个spider 在scrapy中,在编写了多个spider之后,我们如何安排它们每6小时运行一次(可能类似于cron作业) 我不知道上面的内容,你能给我举个例子来建议如何完成上面的事情吗 提前谢谢 从操作系统级别一次运行两个scrapy脚本可能是最简单的。它们都应该能够保存到同一个数据库中。创建一个shell脚本来调用这两个scra

例如,在scrapy中,如果我有两个包含不同HTML的URL。现在我想为一个编写两个单独的spider,并想同时运行两个spider。在scrapy中,可以同时运行多个spider

  • 在scrapy中,在编写了多个spider之后,我们如何安排它们每6小时运行一次(可能类似于cron作业)

  • 我不知道上面的内容,你能给我举个例子来建议如何完成上面的事情吗


    提前谢谢

    从操作系统级别一次运行两个scrapy脚本可能是最简单的。它们都应该能够保存到同一个数据库中。创建一个shell脚本来调用这两个scrapy脚本以同时执行它们:

    scrapy runspider foo &
    scrapy runspider bar
    
    确保使用
    chmod+x script\u name

    要计划每6小时一次cronjob,请在终端中键入
    crontab-e
    ,然后按如下方式编辑文件:

    * */6 * * * path/to/shell/script_name >> path/to/file.log
    

    第一个*是分钟,然后是小时,等等,星号是通配符。因此,在小时数可被6整除的任何时间运行脚本,或者每六小时运行一次脚本。

    您应该使用scrapyd来处理多个爬虫程序

    您可以尝试使用
    CrawlerProcess

    from scrapy.utils.project import get_project_settings
    from scrapy.crawler import CrawlerProcess
    
    from myproject.spiders import spider1, spider2
    
    1Spider = spider1.1Spider()
    2Spider = spider2.2Spider()
    process = CrawlerProcess(get_project_settings())
    process.crawl(1Spider)
    process.crawl(2Spider)
    process.start()
    
    如果要查看爬网的完整日志,请在
    settings.py
    中设置
    log\u文件

    LOG_FILE = "logs/mylog.log"
    

    下面是允许您在scrapy中运行多个spider的代码。将此代码与scrapy.cfg保存在同一目录中(我的scrapy版本是1.3.3,可以正常工作):


    然后,您可以安排此python程序与cronjob一起运行。

    非常感谢您的回复,不介意我问这个问题,您能给出一个示例代码吗?这样它会对您有更多帮助,我可以进一步改进
    from scrapy.utils.project import get_project_settings
    from scrapy.crawler import CrawlerProcess
    
    setting = get_project_settings()
    process = CrawlerProcess(setting)
    
    for spider_name in process.spiders.list():
        print ("Running spider %s" % (spider_name))
        process.crawl(spider_name,query="dvh") #query dvh is custom argument used in your scrapy
    
    process.start()