私はスクリプトから治療法を実行しようとしています。here。それはthisスニペットを使用することを提案しましたが、私はそれを無期限にハングアップします。これはバージョン.10で書かれました。現在の安定版とまだ互換性がありますか?スクリプトからの治療を実行中 - ハング
7
A
答えて
7
from scrapy import signals, log
from scrapy.xlib.pydispatch import dispatcher
from scrapy.crawler import CrawlerProcess
from scrapy.conf import settings
from scrapy.http import Request
def handleSpiderIdle(spider):
'''Handle spider idle event.''' # http://doc.scrapy.org/topics/signals.html#spider-idle
print '\nSpider idle: %s. Restarting it... ' % spider.name
for url in spider.start_urls: # reschedule start urls
spider.crawler.engine.crawl(Request(url, dont_filter=True), spider)
mySettings = {'LOG_ENABLED': True, 'ITEM_PIPELINES': 'mybot.pipeline.validate.ValidateMyItem'} # global settings http://doc.scrapy.org/topics/settings.html
settings.overrides.update(mySettings)
crawlerProcess = CrawlerProcess(settings)
crawlerProcess.install()
crawlerProcess.configure()
class MySpider(BaseSpider):
start_urls = ['http://site_to_scrape']
def parse(self, response):
yield item
spider = MySpider() # create a spider ourselves
crawlerProcess.queue.append_spider(spider) # add it to spiders pool
dispatcher.connect(handleSpiderIdle, signals.spider_idle) # use this if you need to handle idle event (restart spider?)
log.start() # depends on LOG_ENABLED
print "Starting crawler."
crawlerProcess.start()
print "Crawler stopped."
UPDATE:
あなたはまた、クモあたりの設定は、この例を参照する必要がある場合:クモのためのファイルの設定の
for spiderConfig in spiderConfigs:
spiderConfig = spiderConfig.copy() # a dictionary similar to the one with global settings above
spiderName = spiderConfig.pop('name') # name of the spider is in the configs - i can use the same spider in several instances - giving them different names
spiderModuleName = spiderConfig.pop('spiderClass') # module with the spider is in the settings
spiderModule = __import__(spiderModuleName, {}, {}, ['']) # import that module
SpiderClass = spiderModule.Spider # spider class is named 'Spider'
spider = SpiderClass(name = spiderName, **spiderConfig) # create the spider with given particular settings
crawlerProcess.queue.append_spider(spider) # add the spider to spider pool
例:
name = punderhere_com
allowed_domains = plunderhere.com
spiderClass = scraper.spiders.plunderhere_com
start_urls = http://www.plunderhere.com/categories.php?
関連する問題
- 1. Pythonスクリプトの中から治療を実行中 - CSVエクスポータが動作しない
- 2. 複数のスパイダーを治療中に実行する
- 3. 治療中のストリップ\ n \ t \ r
- 4. 治療:ノンブロッキング・ポーズ
- 5. 治療法convert_image
- 6. 雲での治療
- 7. スクリプトから治療を実行するには、それを理解する助けが必要です
- 8. サブプロセスを使って治療を実行する
- 9. 治療SgmlLinkExtractorの質問
- 10. 治療プロジェクトが実行されていません
- 11. 治療単位検査
- 12. 治療中の内部リンクのみを許可する
- 13. xpathの治療からの二重選択
- 14. 治療 - 最後の結果のみ
- 15. OSX Lionでの治療のインストール
- 16. Microsoft Azureに治療を展開する
- 17. セレンと動的ページの治療
- 18. 慣用の治療法Option [Boolean]
- 19. Javaからの実行中のbashスクリプト
- 20. 治療はコンパイルされません
- 21. Pythonで実行中のスクリプトからstdoutを読む
- 22. 同時治療薬はGILの薬ですか?
- 23. 正しい名前のxpathを得るには?治療
- 24. Torのプロキシを使って治療する
- 25. 治療用シェルリクエストのヘッダーを設定する
- 26. 長い治療ポストバックの前にアプレットを隠す
- 27. 多数のリクエストのための治療パターン
- 28. OS X 10.6での治療のインストールに関する問題
- 29. djangoビューでクロールされた治療項目を取得する
- 30. ネストされた配列を使用した治療
この質問と回答は、更新の準備ができている可能性があります。ここに[Scrapyの最新のスニペット](http://scrapy.readthedocs.org/en/0.16/topics/practices.html)があります。それはうまくいきますが、私にとっての問題は次のようなものになります。どのようにTwisted reactorを停止し、完了したら移動しますか? – bahmait