Scrapy请求没有被解析

时间:2019-03-10 15:30:40

标签: python python-2.7 web-scraping scrapy

我的所有请求均未得到解析。它已成功解析。这是我的代码:

# -*- coding: utf-8 -*-
import scrapy

from boardgamegeek.items import BoardgamegeekItem

class TwoPlayersSpider(scrapy.Spider):
    name = 'two_players'
    start_urls = [
        'https://www.boardgamegeek.com/xmlapi/geeklist/48970',
        'https://www.boardgamegeek.com/xmlapi/geeklist/48986'
    ]

    def parse(self, response):
        bg_ids = ",".join(response.xpath("//item/@objectid").extract())
        yield scrapy.Request("https://www.boardgamegeek.com/xmlapi/boardgame/{}".format(bg_ids), self.parse_bg)

    def parse(self, response):
        for bg in response.xpath("//boardgame").extract():
            minplaytime = int(bg.xpath(".//minplaytime/text()").extract_first())
            maxplaytime = int(bg.xpath(".//maxplaytime/text()").extract_first())
            maxplayers = int(bg.xpath(".//maxplayers/text()").extract_first())

            if (minplaytime <= 40 or maxplaytime <= 60) and maxplayers >= 3:
                i = BoardgamegeekItem()
                i["link"] = "http://www.boardgamegeek.com/boardgame/{}".format(bg.xpath(".//objectid").extract_first())
                i["title"] = bg.xpath(".//name/text()").extract_first()
                i["minplayers"] = int(bg.xpath(".//minplayers/text()").extract_first())
                i["maxplayers"] = maxplayers
                i["minplaytime"] = minplaytime
                i["maxplaytime"] = maxplaytime

                yield i

1 个答案:

答案 0 :(得分:0)

找到了!发生这种情况是因为我有两个名称完全相同的解析函数!我忘记将其中一个解析名称更新为parse_bg