【问题标题】:Scrapy debug using Visual Studio使用 Visual Studio 进行 Scrapy 调试
【发布时间】:2014-09-11 21:02:24
【问题描述】:

我是 Scrapy 和 Python 的新手,我很喜欢它。

是否可以使用 Visual Studio 调试 scrapy 项目?如果可能,怎么做?

【问题讨论】:

    标签: python visual-studio-2012 scrapy


    【解决方案1】:

    我创建了一个名为 runner.py 的初始化文件

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

    您只需在项目选项中将该文件设置为启动。

    它适用于 Visual Studio 2015

    【讨论】:

      【解决方案2】:

      您可以在Visual Studio 2012 中安装PTVS。然后从现有的python 代码创建一个python 项目,并导入您的代码。

      如果您熟悉 Visual Studio,它与 Visual Studio 中的其他语言相同,例如 C++/C#。只需创建一些断点并使用调试启动您的脚本。

      正如 ThanhNienDiCho 所说,将“-mscrapy.cmdline crawl your_spider_name”添加到您的解释器参数中。

      【讨论】:

      • 谢谢 Yuvan,我之前已经成功调试过 Python。我一直在寻找的是使用VS调试scrapy。但是,我发现这个链接pytools.codeplex.com/… 详细说明了使用 VS 的调试选项。
      • 我不认为scrapy与普通的python项目有什么区别。所有正常的python脚本文件。您提到的与我的回答中的 PTVS 相同。
      【解决方案3】:

      好吧,我尝试了所有给 OP 的答案,但没有一个对我有用。最接近的似乎是@Rafal Zajac 发布的,但它对我来说也失败了。

      我最终在here 中找到了解决方案,但是 还有一些答案在新版本中不再有效。

      所以似乎对我有用的版本是这样的:

      from scrapy.crawler import CrawlerProcess
      from tutorial.spiders.dmoz_spider import DmozSpider
      import scrapy.utils.project 
      from sys import stdin
      
      print ("init...")
      spider = DmozSpider()
      setttings = scrapy.utils.project.get_project_settings()
      process = CrawlerProcess(setttings)
      process.crawl(spider)
      process.start()
      x = stdin.read(1)
      

      这应该在启动脚本中,不需要脚本参数。

      【讨论】:

      • 感谢您指出我的解决方案不再有效。我又回到了 Scrapy,所以我不得不(再次)修复 VS 中的调试。看起来与我最初的建议只有很小的不同。我已经更新了我的答案...
      【解决方案4】:

      我遇到了同样的问题,袁的initial answer 对我不起作用。

      要运行 Scrapy,您需要打开 cmd.exe

      cd "project directory"
      scrapy crawl namespider
      
      • scrapy 是 scrapy.bat。
      • namespider 是蜘蛛类中字段的值。
      • 要从 Visual Studio 运行 Scrapy,请使用 -mscrapy.cmdline crawl your_spider_name 的输入参数。见http://imgur.com/2PwF3g0

      【讨论】:

        【解决方案5】:

        更新:

        看起来对于 1.1 版的scrapy,您必须将项目调试设置中的“脚本参数”更改为“runspider .py”,它应该可以按预期工作:


        我也是 python 和 scrapy 的新手,我想我遇到了完全相同的问题。

        我正在关注 Scrapy 网站上的教程:http://doc.scrapy.org/en/latest/intro/tutorial.html,所以首先我为 scrapy 项目“教程”生成了文件结构。

        下一步是“从现有的 python 代码”创建新的 python 项目并选择顶部文件夹“tutorial”。当向导询问要导入哪些文件类型时,我只需使用 *.* 来导入所有内容。如果您保留默认设置,它将不会导入文件 scrapy.cfg。

        我猜你已经走到这一步了,你只是想要一个断点,例如在蜘蛛类中,按 F5 并开始调试?

        我按照建议尝试了:

        正如 ThanhNienDiCho 所说,将“-mscrapy.cmdline crawl your_spider_name”添加到您的解释器参数中。

        在这种情况下,您还必须设置启动文件 - 我无法弄清楚这部分。您不能使用项目中的任何文件,因为它不是这样工作的,对吧?我尝试在顶层添加 dummy.py (空文件)作为启动文件,但随后我从 Scrapy 收到一条消息“未知命令:爬行” - 只是运行命令“scrapy”但不是从项目文件夹中。 也许有办法让它工作,有人可以用这种方法解释完整的设置?我没弄好。

        最后我注意到scrapy.bat的linux等价物是一个python文件,内容如下:

        from scrapy.cmdline import execute
        execute()
        

        所以我将我的 dummy.py 替换为具有上述内容的文件 scrapy_runner.py(文件名无关紧要)——这就是我的启动文件。

        现在最后一件事是添加到项目属性 -> 调试 -> 脚本参数以下值:

        抓取 dmoz

        其中“dmoz”是教程中蜘蛛的名字。

        此设置对我有用。我希望这会有所帮助。

        【讨论】:

        • 为什么将“crawl dmoz”作为参数传递?我收到错误无法打开文件:传递 mscrapy.cmdline 时出现“crawl” crawl dmoz 我收到“unknown command: crawl”错误
        • 我在 2 年前创建了我的评论,此后再也没有使用过 scrapy。据我所知,您需要传递“crawl dmoz”,以便在调试时由 Visual Studio 执行的结果命令是:“python scrapy_runner.py crawl dmoz”。当执行文件 scrapy_runner.py 中的函数“execute()”时,将使用参数“crawl”和“dmoz”。
        猜你喜欢
        • 2019-10-31
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多