Python 3.6 - Scrapy:在抓取内容之前使用spider导航两次

时间:2018-05-10 17:56:29

标签: python web-scraping scrapy

我是Scrapy的新手,我已经构建了一个蜘蛛,它首先在start_url中提取网址列表,浏览每个网址并抓取内容。

但是,我需要稍微改变新蜘蛛的逻辑。蜘蛛必须在start_url中提取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()
            }

我在我的工作蜘蛛中添加了这个新步骤,但我没有收到任何数据。 Spider像以前一样爬行(200响应),但只是第一步,并没有浏览统计页面。我究竟做错了什么?

0 个答案:

没有答案