【问题标题】:How to run a scrapy with a py file如何使用 py 文件运行 scrapy
【发布时间】:2012-09-29 04:17:56
【问题描述】:

您好,我正在研究 scrapy,我创建了一个带有 scrapy startproject example 的 scrapy 文件夹 并编写蜘蛛从 url 中抓取所有数据,以及 我使用命令scrapy crawl spider_name 运行了蜘蛛,它工作正常并且能够获取数据。

但我有一个要求,我需要使用创建的单个蜘蛛文件来运行 scrapy,我的意思是单个 py 文件,例如

python -u /path/to/spider_file_inside_scrapy_folder_created.py

用spider.py文件创建scrapy项目文件夹后,是否可以在没有scrapy crawl命令的情况下运行蜘蛛

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    可以,首先通过命令提示符到达 xyz.py 文件所在的目的地。然后你可以写命令:

    scrapy runspider xyz.py
    

    如果你想保存输出,你可以写:

    scrapy runspider xyz.py -o output.csv
    

    或者您也可以将输出保存在 json 中

    【讨论】:

      【解决方案2】:

      是的!如果你想以编程方式而不是通过 Popen 调用命令,你可以按如下方式运行它:

      >>> from scrapy.cmdline import execute
      >>> execute(['scrapy','crawl','dmoz'])
      

      如果您有任何问题,请告诉我。我使用了scrapy docs在Github上引用的版本进行测试:

      https://github.com/scrapy/dirbot

      【讨论】:

      • 非常感谢您的回复。实际上,我的想法是将 spider.py 文件的整个路径存储在数据库中,例如 project_folder/project_folder/spider/spider.py 并通过查询数据库的文件路径并使用 python spider.py 文件运行文件,因为实际上我有另一个使用 urllib2 等使用抓取代码编写的单个 py 文件,这些文件存储在数据库中并从数据库中获取文件并使用 os.execute 命令直接使用 python 命令运行。
      • 所以最后我想在 scrapy 中运行一个 py 文件,以便整个抓取过程继续进行抓取代码
      • @Kouripm 查看scrapy代码,我认为调用您设置的蜘蛛的唯一方法是通过执行方法scrapy.cmdline。如果它真的需要一个shell命令,你总是可以做 python -c "from scrapy.cmdline import execute; execute(['scrapy','crawl','dmoz'])"
      • 对我来说,这是正确的答案:如果有人没有误解你的问题,那就是:)
      【解决方案3】:

      试试runspider 命令:

      scrapy runspider /path/to/spider_file_inside_scrapy_folder_created.py
      

      【讨论】:

        【解决方案4】:

        我认为答案(如果我理解你的问题)现在是use the API

        import scrapy
        from scrapy.crawler import CrawlerProcess
        
        class MySpider(scrapy.Spider):
            # Your spider definition
            ...
        
        process = CrawlerProcess({
            'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
        })
        
        process.crawl(MySpider)
        process.start()
        

        【讨论】:

          【解决方案5】:

          你的蜘蛛类文件:

          class YouNameSpider(scrapy.Spider):
              name = 'youname'
              allowed_domains = ['https://www.YouName.com']
          

          在 YouName 中创建 main.py:

          from scrapy.cmdline import execute
          import os, sys
          sys.path.append(os.path.dirname(os.path.abspath(__file__)))
          execute(['scrapy', 'crawl', 'youname'])
          

          【讨论】:

            猜你喜欢
            • 2021-03-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-17
            • 1970-01-01
            • 2016-12-18
            • 2021-10-15
            • 1970-01-01
            相关资源
            最近更新 更多