Scrapy Не перезапускается Scrape - PullRequest
0 голосов
/ 14 декабря 2018

То, что я пытаюсь сделать, это запускать эту очистку каждые десять секунд и выводить csv, который отражает время.Позже я хотел бы запланировать очистку, но пока я не смогу заставить это работать, я не думаю, что будет полезно двигаться вперед.Вот мой паук.Мой паук:

import scrapy
import datetime as dt

class EspnSpider(scrapy.Spider):
    name = 'espn'
    allowed_domains = ['games.espn.com']
    start_urls = ['http://games.espn.com/ffl/leaders?&scoringPeriodId=1&seasonId=2018']
    today = dt.datetime.today().strftime('%Y%m%d %H%M%S')  
    custom_settings = {
            'FEED_URI': 'filename_{}.csv'.format(today),
            'FEED_FORMAT': 'csv',
            }
    def parse(self, response):
#        response.body.decode('utf8')
        week =  response.xpath('//select[@id="scoringPeriods"]//option[@selected = "selected"]//text()').extract_first()
        table = response.xpath('//table[@id="playertable_0"]')
        for player in table.css('tr[id]'):
            item = {
                'id': player.css('::attr(id)').extract_first(),
                'tpos': player.css('td.playertablePlayerName::text').extract_first().replace(u'\xa0',u' ').split(',')[-1].strip(),
                'name': player.css('a.flexpop::text').extract_first(),
                'stats': player.css('td.playertableStat::text').extract()[:-1],
                'week': week,
                }    
            yield item
        for next_page in response.xpath('//select[@id="scoringPeriods"]//option[contains(text(), "Week")]//@value')[1:].extract():
            yield scrapy.Request(response.urljoin('leaders?'+ next_page), callback = self.parse)

Код, который я использую для планирования очистки, находится здесь:

from twisted.internet import reactor
from espn import EspnSpider
from scrapy.crawler import CrawlerRunner

def run_crawl():
    runner = CrawlerRunner({
        'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
        })
    deferred = runner.crawl(EspnSpider)
    deferred.addCallback(reactor.callLater, 10, run_crawl) #I believe that 10 is in seconds
    return deferred
run_crawl()
reactor.run()   

Первый csv очищен, и, как я хочу.Но это не соскребает снова, а просто бездействует.Какие-нибудь мысли?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...