Google グループの Steven Almeroth から:
そうです、リクエストを生成してアイテムのリストを返すことはできますが、それはあなたが試みていることではありません。アイテムを返すのではなく、アイテムのリストを生成しようとしています。また、既に parse() をジェネレーター関数として使用しているため、yield と return の両方を一緒にすることはできません。しかし、あなたは多くの収量を持つことができます。
これを試して:
def parse(self, response):
hxs = HtmlXPathSelector(response)
base_url = response.url
links = hxs.select(self.toc_xpath)
for index, link in enumerate(links):
href, text = link.select('@href').extract(), link.select('text()').extract()
yield Request(urljoin(base_url, href[0]), callback=self.parse2)
for item in self.parse2(response):
yield item