Sto cercando di eseguire scrapy da uno script come discusso here. Ha suggerito di utilizzare lo snippet this, ma quando lo faccio si blocca indefinitamente. Questo è stato scritto nella versione .10; è ancora compatibile con la stalla attuale?Esecuzione di Scrapy da uno script - Arresti
risposta
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:
Se avete bisogno di avere anche le impostazioni per ragno vedere questo esempio:
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
Esempio di impostazioni nel file per gli spider:
name = punderhere_com
allowed_domains = plunderhere.com
spiderClass = scraper.spiders.plunderhere_com
start_urls = http://www.plunderhere.com/categories.php?
Ottengo traceback [this] (https://gist.github.com/1051117). Il mio progetto scrapy è chiamato raschietto. Potrebbe essere il problema? – ciferkey
Penso che questo sia il problema. Questo è da un vero progetto. È possibile rimuovere i riferimenti al raschietto. Hai solo bisogno di alcune impostazioni per gli spider. – warvariuc
quindi, dopo aver rimosso i riferimenti a raschietto, come faccio ad importare le impostazioni per il mio progetto? – ciferkey
- 1. esecuzione di uno script Python da PHP
- 2. Esecuzione di uno script da Groovy
- 3. Confuso sull'esecuzione di Scrapy da uno script Python
- 4. Esecuzione di git pull da uno script php
- 5. Esecuzione di uno script Powershell in Fake
- 6. Esecuzione di uno script groove in eclissi
- 7. Esecuzione di attività Scrapy in Python
- 8. Esecuzione di uno script come altro utente e avvio di uno script
- 9. Esecuzione di più spider in scrapy
- 10. Come chiamare particolari spider Scrapy da un altro script Python
- 11. Esecuzione di un programma/script da QMake
- 12. Esegui uno script bash da uno script R
- 13. Come posso chiamare uno script python da uno script python
- 14. Esecuzione di uno script SQL archiviato come risorsa
- 15. Esecuzione di uno script PHP con un lavoro CRON
- 16. Esecuzione di uno script per creare tabelle con HSQLDB
- 17. esecuzione di uno script Python all'interno di un altro Directory
- 18. Esecuzione di uno script Python all'esterno di Django
- 19. Esecuzione di uno script di shell bash in java
- 20. Come posso misurare il tempo di esecuzione di uno script?
- 21. Come limitare il tempo di esecuzione di uno script BASH
- 22. Comando di gestione personalizzato Django in esecuzione Scrapy: come includere le opzioni di Scrapy?
- 23. Esecuzione di script Groovy da Gradle
- 24. Esecuzione di script bash da java
- 25. Terminare uno script python da un altro script python
- 26. Esecuzione di MSTest UnitTests utilizzando uno script MSBuild
- 27. Plugin Maven exec - Esecuzione di uno script Python
- 28. Come ottenere il nome di uno script Python in esecuzione?
- 29. Esecuzione di un file EXE utilizzando uno script PowerShell
- 30. esegue uno script python persistente da systemd?
Questa domanda e risposta potrebbe essere pronta per l'aggiornamento. Ecco [un recente frammento di Scrapy] (http://scrapy.readthedocs.org/en/0.16/topics/practices.html). Funziona, ma la domanda, per me, diventa: come fermi il reattore Twisted e vai avanti quando hai finito? – bahmait