在Scrapy> = 0.14中以编程方式启动爬虫的最简单方法是什么?

Edw*_*rdr 9 python scrapy web-scraping

我想从Python模块开始Scrapy中的爬虫.我想基本上模仿的本质$ scrapy crawl my_crawler -a some_arg=value -L DEBUG

我有以下几点:

  • 该项目的settings.py文件
  • 物品和管道
  • 一个爬虫类,它扩展了BaseSpider并在初始化时需要参数.

我可以很高兴使用scrapy上面指定的命令运行我的项目,但是我正在编写集成测试,我想以编程方式:

  • 使用settings.py具有my_crawlername属性的设置和具有name属性的爬虫启动爬网(我可以从我的测试模块轻松实例化此类.
  • 我希望所有的管道和中间件都按照规范使用settings.py.
  • 在抓取器完成之前,我很高兴阻止该进程.管道将数据转储到数据库中,这是在我完成爬网以完成测试后我将要检查的数据库的内容.

那么,任何人都可以帮助我吗?我在网上看到过一些例子,但它们要么是针对多个蜘蛛的黑客,要么是绕过Twisted's阻挡自然,或者不使用Scrapy 0.14或更高版本.我只需要一些非常简单的东西.:-)

Wil*_*hes 7

from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log, signals
from testspiders.spiders.followall import FollowAllSpider

spider = FollowAllSpider(domain='scrapinghub.com')
crawler = Crawler(Settings())
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run() # the script will block here until the spider_closed signal was sent
Run Code Online (Sandbox Code Playgroud)

请参阅文档的这一部分