2016-06-19 4 views
3

Я хочу запланировать, чтобы мой паук снова запускался через 1 час, когда ползание закончено. В моем коде spider_closed метод вызывает после завершения сканирования. Теперь, как запустить паука из этого метода. Или есть какие-либо доступные настройки, чтобы запланировать спайдер.Как я могу запланировать сканирование паука через определенное время?

Вот мой основной код паука.

import scrapy 
import codecs 
from a2i.items import A2iItem 
from scrapy.selector import Selector 
from scrapy.http import HtmlResponse 
from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.conf import settings 
from scrapy.crawler import CrawlerProcess 
from scrapy import signals 
from scrapy.utils.project import get_project_settings 
from scrapy.xlib.pydispatch import dispatcher 


class A2iSpider(scrapy.Spider): 
    name = "notice" 
    f = open("urls.txt") 
    start_urls = [url.strip() for url in f.readlines()] 
    f.close() 
    allowed_domains = ["prothom-alo.com"] 

    def __init__(self): 
     dispatcher.connect(self.spider_closed, signals.spider_closed) 

    def parse(self, response): 

     for href in response.css("a::attr('href')"): 
      url = response.urljoin(href.extract()) 
      print "*"*70 
      print url 
      print "\n\n" 
      yield scrapy.Request(url, callback=self.parse_page,meta={'depth':2,'url' : url}) 


    def parse_page(self, response): 
     filename = "response.txt" 
     depth = response.meta['depth'] 

     with open(filename, 'a') as f: 
      f.write(str(depth)) 
      f.write("\n") 
      f.write(response.meta['url']) 
      f.write("\n") 

     for href in response.css("a::attr('href')"): 
      url = response.urljoin(href.extract()) 
      yield scrapy.Request(url, callback=self.parse_page,meta={'depth':depth+1,'url' : url}) 


    def spider_closed(self, spider): 
     print "$"*2000 

ответ

1

Вы можете использовать cron.

crontab -e для создания расписания и запуска скриптов с правами администратора или crontab -u [user] -e для работы в качестве конкретного пользователя.

в нижней части вы можете добавить 0 * * * * cd /path/to/your/scrapy && scrapy crawl [yourScrapy] >> /path/to/log/scrapy_log.log

0 * * * * делает скрипт работает ежечасно, и я верю, что вы можете найти более подробную информацию о настройках в Интернете.

Смежные вопросы