我的所有请求均未得到解析。它已成功解析。这是我的代码:
# -*- 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
答案 0 :(得分:0)
找到了!发生这种情况是因为我有两个名称完全相同的解析函数!我忘记将其中一个解析名称更新为parse_bg