Scrapy返回值错误不支持SelectorList

iq3niunx  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(115)

我认为问题是当我尝试输入每个url拼写response.follow在循环中,但idk为什么,它将大约500个链接完美地传递到extract_xpath,但只返回ValueError不支持SelectorList

def spell_parse(self, response):

        def extract_xpath(self, query):
            return response.xpath(query).get(Default = '')

    def parse(self, response):

        def extract_xpath(self, query):
            return response.xpath(query).get()

        for spell in response.xpath('//tr'):

            spell_def = spell.xpath('./td/a/@href')
            yield response.follow(spell_def, callback = self.spell_parse)

            yield {

                'Spell name': spell.xpath('./td[1]//text()').extract(),
                'School': spell.xpath('./td[2]//text()').extract(),
                'Casting time': spell.xpath('./td[3]//text()').extract(),
                'Range': spell.xpath('./td[4]//text()').extract(),
                'Duration': spell.xpath('./td[5]//text()').extract(),
                'Components': spell.xpath('./td[6]//text()').extract(),
                'Definition': extract_xpath('/p[4]//text()').extract(),
                'Levels': extract_xpath('/p[5]//text()').extract(),
            }
rkue9o1l

rkue9o1l1#

您需要像spell_def = spell.xpath('./td/a/@href').get()这样将get()spell_def = spell.xpath('./td/a/@href')一起使用,否则您将无法将href的实际值传递给以下函数。

相关问题