avez ce code qui exécute crawler scrapy à partir du script (http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script). Mais ça ne marche pas.Comment utiliser APscheduler avec scrapy
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy import log,signals
from spiders.egov import EgovSpider
from scrapy.utils.project import get_project_settings
def run():
spider =EgovSpider()
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configured
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()
from apscheduler.schedulers.twisted import TwistedScheduler
sched = TwistedScheduler()
sched.add_job(run, 'interval', seconds=10)
sched.start()
Mon araignée:
import scrapy
class EgovSpider(scrapy.Spider):
name = 'egov'
start_urls = ['http://egov-buryatia.ru/index.php?id=1493']
def parse(self, response):
data = response.xpath("//div[@id='main_wrapper_content_news']//tr//text()").extract()
print data
print response.url
f = open("vac.txt","a")
for d in data:
f.write(d.encode(encoding="UTF-8") + "\n")
f.write(str(now))
f.close()
Si je remplace la ligne "reactor.run()", araignée a commencé une fois au bout de 10 secondes:
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy import log,signals
from spiders.egov import EgovSpider
from scrapy.utils.project import get_project_settings
def run():
spider =EgovSpider()
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configured
crawler.crawl(spider)
crawler.start()
log.start()
from apscheduler.schedulers.twisted import TwistedScheduler
sched = TwistedScheduler()
sched.add_job(run, 'interval', seconds=10)
sched.start()
reactor.run()
Je suis faible expérience avec Python et anglais :) S'il vous plaît, aidez-moi.
OK, alors quel est le problème avec le dernier morceau de code? Vous avez dit que ça a commencé après 10 secondes comme il était censé le faire. –
est démarré une fois. Pas toutes les 10 secondes. – kzr
Si vous êtes toujours à la recherche d'une réponse [ici] (http://kirankoduru.github.io/python/running-scrapy-programmatically.html) est un article de blog que j'ai écrit il n'y a pas longtemps sur la façon de l'implémenter. Aussi, vous avez besoin de la version 0.24 pour que cela fonctionne. –