Scrapy将刮取的值返回到数组中

时间:2014-05-06 09:19:15

标签: python json xhtml scrapy

Scrapy似乎正在正确地提取数据,但是正在格式化我的JSON对象中的输出,就像它是一个数组一样:

[{"price": ["$34"], "link": ["/product/product..."], "name": ["productname"]},
{"price": ["$37"], "link": ["/product/product"]...

我的蜘蛛类看起来像这样:

def parse(self, response):
    sel = Selector(response)
    items = sel.select('//div/ul[@class="product"]')
    skateboards = []
    for item in items:
        skateboard = SkateboardItem()
        skateboard['name'] = item.xpath('li[@class="desc"]//text()').extract()
        skateboard['price'] = item.xpath('li[@class="price"]"]//text()[1]').extract()
        skateboard['link'] = item.xpath('li[@class="image"]').extract()
        skateboards.append(skateboard)
    return skateboards

我如何确保Scrapy只输出每个键的单个值,而不是它当前生成的数组?

2 个答案:

答案 0 :(得分:5)

.extract()  

始终返回您可以使用的列表

''.join(item.xpath('li[@class="desc"]//text()').extract())

获取字符串

答案 1 :(得分:0)

使用:
1 .extract_first()
2 .extract()[0]

以字符串格式获取数据。

PS:使用Scrapy 1.2