Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy将刮取的值返回到数组中_Python_Json_Xhtml_Scrapy - Fatal编程技术网

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

Python Scrapy将刮取的值返回到数组中,python,json,xhtml,scrapy,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) i

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只为每个键输出一个值,而不是它当前生成的数组

.extract()  
始终返回您可以使用的列表

''.join(item.xpath('li[@class="desc"]//text()').extract())
要获取字符串,请使用:
1。先提取_()
2.extract()[0]

获取字符串格式的数据

PS:使用Scrapy 1.2时,如果上面没有任何项目,则会返回KeyError异常。最好对单个项目使用
extract\u first()