什么是快速检查Scrapy行为/错误的最简单方法?

时间:2014-12-04 18:51:27

标签: python scrapy

我有时会尝试solve Scrapy problems on stackoverflow,但通常不会测试我的想法,因为我不知道如何快速执行此操作,而无需设置整个Scrapy项目并解析真实的网页。

使用离线示例文件检查问题/解决方案的最快方法是什么,而无需创建全新的scrapy项目?

1 个答案:

答案 0 :(得分:2)

从单文件

运行蜘蛛

如果您的蜘蛛不依赖于管道或Scrapy项目中使用的任何常规内容,一个想法是创建一个自包含文件并使用以下命令运行蜘蛛:

scrapy runspider file_with_my_spider.py

Scrapy会查找文件中的第一个蜘蛛(扩展scrapy.Spider或其派生scrapy.CrawlSpider的类)并运行它。

如果您尝试隔离最初位于Scrapy项目中的蜘蛛代码的代码,您还必须将项目类和任何其他依赖项复制到此单个文件中。

为测试站点运行蜘蛛

对于离线测试,您可以复制将HTML页面放在目录中的站点结构,然后在其上运行python -m SimpleHTTPServer:这将启动http://localhost:8000/上的本地服务器,您可以运行蜘蛛反对它。

为了便于决定何时对本地服务器和真实站点进行运行,您可以使蜘蛛看起来像这样:

import scrapy

class MySpider(scrapy.Spider):
    name = 'my-spider'
    start_urls = ['http://www.some-real-site-url.com']

    def __init__(self, start_url=None, *args, **kwargs):
        if start_url:
            self.start_urls = [start_url]

    ...

在你的蜘蛛中拥有它,你将能够做到:

scrapy runspider file_with_my_spider.py -a start_url=http://localhost:8000/

用于针对显示在本地服务器中的站点运行spider。