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只输出每个键的单个值,而不是它当前生成的数组?
答案 0 :(得分:5)
.extract()
始终返回您可以使用的列表
''.join(item.xpath('li[@class="desc"]//text()').extract())
获取字符串
答案 1 :(得分:0)
使用:
1 .extract_first()或
2 .extract()[0]
以字符串格式获取数据。
PS:使用Scrapy 1.2