2013-08-07 4 views
3

Я пытаюсь запустить Scrapy с Python. Я смотрю на этот код, который (source):Scrapy run from Python

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

spider = FollowAllSpider(domain='scrapinghub.com') 
crawler = Crawler(Settings()) 
crawler.configure() 
crawler.crawl(spider) 
crawler.start() 
log.start() 
reactor.run() # the script will block here 

Моя проблема заключается в том, что я запутался о том, как настроить этот код для запуска свой собственный паук. Я назвал мой spider-проект «spider_a», который указывает домен на обход внутри самого паука.

То, что я спрашиваю, если я запускаю мой паук со следующим кодом:

scrapy crawl spider_a 

Как настроить пример кода питона выше, чтобы сделать то же самое?

ответ

2

Просто импортировать его и перейти к crawler.crawl(), как:

from testspiders.spiders.spider_a import MySpider 

spider = MySpider() 
crawler.crawl(spider) 
+0

Выполнение этого способа игнорирует настройки пользователя. – Medeiros

1

В Scrapy 0.19.x (может работать с более старыми версиями), вы можете сделать следующее.

spider = FollowAllSpider(domain='scrapinghub.com') 
settings = get_project_settings() 
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 

Вы можете даже вызвать команду непосредственно из сценария, как:

from scrapy import cmdline 
cmdline.execute("scrapy crawl followall".split()) #followall is the spider's name 

Посмотрите на мой ответ here. I changed официальный documentation, так что теперь ваш искатель использует ваши настройки и может производить вывод.