首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scrapy >= 0.14中编程启动爬虫最简单的方法是什么?

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

Stack Overflow用户
提问于 2012-06-26 18:34:24
回答 2查看 2.2K关注 0票数 9

我想从Python模块在Scrapy中启动一个爬虫。我想从本质上模仿$ scrapy crawl my_crawler -a some_arg=value -L DEBUG的本质

我有以下几点准备:

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

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

  • 使用settings.py中的设置和具有my_crawler名称属性的爬虫启动爬行(我可以轻松地从测试模块实例化这个类。
  • 我希望按照settings.py中的规范使用所有管道和中间件。
  • 在爬虫完成之前,我很高兴这个过程会被阻塞。管道在DB中转储东西,在完成爬行以满足我的测试之后,它就是我将要检查的DB的内容。

有人能帮我吗?我在网络上看到了一些例子,但它们要么是针对多个蜘蛛的黑客攻击,要么是绕过Twisted's阻塞特性,或者不使用Scrapy0.14或更高版本。我只需要一些很简单的东西。:-)

EN

回答 2

Stack Overflow用户

发布于 2013-09-10 16:57:07

代码语言:javascript
复制
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

请参阅这部分文档

票数 7
EN

Stack Overflow用户

发布于 2015-01-01 17:43:02

@wilfred官方文档的回答很好,除了伐木部分,这里是我的:

代码语言:javascript
复制
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy import log, signals
from testspiders.spiders.followall import FollowAllSpider
from scrapy.utils.project import get_project_settings

spider = FollowAllSpider()
crawler = crawler = Crawler(get_project_settings())
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start_from_settings(get_project_settings())
reactor.run()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11213835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档