我有时会尝试solve Scrapy problems on stackoverflow,但通常不会测试我的想法,因为我不知道如何快速执行此操作,而无需设置整个Scrapy项目并解析真实的网页。
使用离线示例文件检查问题/解决方案的最快方法是什么,而无需创建全新的scrapy项目?
答案 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。