【问题标题】:Running Multiple spiders in scrapy在scrapy中运行多个蜘蛛
【发布时间】:2012-06-08 05:58:43
【问题描述】:
  1. 例如,在 scrapy 中,如果我有两个包含不同 HTML 的 URL。现在我想为一个单独编写两个蜘蛛,并希望同时运行两个蜘蛛。在 scrapy 中是否可以同时运行多个蜘蛛。

  2. 在scrapy中写了多个蜘蛛后,我们如何安排它们每6小时运行一次(可能像cron作业)

我不知道上面的内容,你能用一个例子来建议我如何执行上面的事情吗?

提前致谢。

【问题讨论】:

    标签: python scrapy web-crawler


    【解决方案1】:

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

    scrapy runspider foo &
    scrapy runspider bar
    

    确保使用chmod +x script_name 使该脚本可执行

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

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

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

    【讨论】:

    • 非常感谢您的回复,不介意我问这个问题,您能给出一个示例代码,这样它会更有帮助,我可以做得更进一步
    【解决方案2】:

    您可以尝试使用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_FILE

    LOG_FILE = "logs/mylog.log"
    

    【讨论】:

      【解决方案3】:

      你应该使用scrapyd来处理多个爬虫 http://doc.scrapy.org/en/latest/topics/scrapyd.html

      【讨论】:

        【解决方案4】:

        这里是允许你在 scrapy 中运行多个蜘蛛的代码。将此代码与 scrapy.cfg 保存在同一目录中(我的 scrapy 版本是 1.3.3 并且可以使用):

        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()
        

        然后你可以安排这个 python 程序使用 cronjob 运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-21
          • 2017-02-15
          • 1970-01-01
          相关资源
          最近更新 更多