Python 3.6 - Scrapy: проведите два раза с пауком, прежде чем очищать содержимое - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в Scrapy, и я уже создал паука, который сначала извлекает список URL-адресов в start_url, перемещается по каждому из этих URL-адресов и просматривает содержимое.

Однако мне нужно изменить логикумой новый паук немного.Паук должен извлечь список URL-адресов в start_url, должен посетить каждый из этих URL-адресов и отсюда должен извлечь и посетить другой URL-адрес, прежде чем начать очистку содержимого:

import scrapy

class KickerbotSpiderStats(scrapy.Spider):
    name = 'matches-stats2'
    allowed_domains = ['www.kicker.de']
    start_urls = ['http://www.kicker.de/news/fussball/wm/spiele/weltmeisterschaft/2014/-1/0/spieltag.html']

    # Step 1 // Go to Site with all matches and extract URL of each of them
    def parse(self, response):
        for match in response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "aligncenter", " " ))]//a/@href').extract():
             yield scrapy.Request("http://www.kicker.de" + match, callback=self.parse_matchpage)

     # Step 2 // From each match URL, get URL for match stats 
    def parse_matchpage(self, response):
        for statsPage in response.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "nav4tab-sel", " " ))]//a/@href').extract():
             yield scrapy.Request("http://www.kicker.de" + statsPage, callback=self.parse_statspage)

    # Step 3 // Parse Stats from match 
    def parse_statspage(self, response):


        yield {
                'matchId' : (response.url).split("/")[-2],
                'local' : response.xpath('//*[(@id = "SpielpaarungLiveTitleRow")]//a/text()').extract_first().strip()
            }

Я добавил этот новый шагкак в моем рабочем пауке, но я не получаю никаких данных обратно.Паук ползет по-прежнему (ответ 200), но только для первого шага, и не перемещается по странице статистики.Что я делаю неправильно?

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