CrawlSpiderルールはそのようには機能しません。BaseSpiderをサブクラス化し、スパイダーコールバックに独自のリンク抽出を実装する必要があります。例えば:
from scrapy.spider import BaseSpider
from scrapy.http import Request
from scrapy.selector import XmlXPathSelector
class MySpider(BaseSpider):
name = 'myspider'
def parse(self, response):
xxs = XmlXPathSelector(response)
links = xxs.select("//link/text()").extract()
return [Request(x, callback=self.parse_link) for x in links]
たとえば、次のコマンドを実行して、シェルでXPathを試すこともできます。
scrapy shell http://blog.scrapy.org/rss.xml
そして、シェルに入力します。
>>> xxs.select("//link/text()").extract()
[u'http://blog.scrapy.org',
u'http://blog.scrapy.org/new-bugfix-release-0101',
u'http://blog.scrapy.org/new-scrapy-blog-and-scrapy-010-release']