I believe that you simply do not use the most appropriate XPath expression.
Amazon HTML looks messy, not very uniform, and therefore not very easy to parse. But after some experiments, I was able to extract all 12 names from several search results with the following function parse:
def parse(self, response):
sel = Selector(response)
p = sel.xpath('//div[@class="data"]/h3/a')
titles = p.xpath('span/text()').extract() + p.xpath('text()').extract()
items = []
for title in titles:
item = AmazonScrapyItem()
item['title'] = title
items.append(item)
return items
, , , .