刮痧:换衣服输出方式d

2024-04-25 14:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题,一时想不通

由于网站结构,我捕获到的json文件中的数据如下所示:

[{"location": ["(\u5357\u6295)", "(\u53f0\u5357)", "(\u53f0\u5357)"], 
"leisuretitle": ["2014", "20140721", "20140726"]}]

但我想要的格式是:

{"leisurelocation": ["(\u5357\u6295)"], "leisuretitle": ["2014"]},   
{"leisurelocation": ["(\u53f0\u5357)"], "leisuretitle": ["20140721"]},  
{"leisurelocation": ["(\u53f0\u5357)"], "leisuretitle": ["20140726"]}]

这是我的密码:

我不知道怎么做。有人能给我引路吗?你知道吗

def parse(self, response):
    sel = Selector(response)
    sites = sel.css("div#listabc table ")
    for site in sites:
        item = LeisureItem()
        leisurelocation = site.css(" tr > td.subject > span.city::text ").extract()
        leisuretitle =  site.css(" tr > td.subject a::text ").extract()

        item['leisurelocation'] = leisurelocation
        item['leisuretitle'] = leisuretitle
        yield item

Tags: textresponsesiteitemcsstrsitestd
2条回答

您需要从leisurelocationleisuretitle生成多个项:

leisurelocation = ...
leisuretitle =  ...

for i,j in zip(leisurelocation, leisuretitle):
    yield LeisureItem(leisurelocation=[i], leisuretitle=[j])

kev的答案对于你定义的问题是正确的,但我认为这不是正确的方法。你应该一件一件地刮。你知道吗

例如,逐行循环表并将每个刮下的行作为一个项生成:

def parse(self, response):
    for city in response.css("div#listabc table>tr"):
        item = LeisureItem()
        item['leisurelocation'] = city.css("td.subject>span.city::text").extract()
        item['leisuretitle'] = city.css("td.subject a::text").extract()
        yield item

相关问题 更多 >