用Python解析JSON文件中的子节点

2024-09-30 16:39:42 发布

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

我尝试使用Python解析JSON文件中的特定子节点。在

我知道以前也有类似的问题被问过和回答过,但我只是无法将这些解决方案转化为我自己的问题(免责声明:我不是开发人员)。在

这是我的JSON文件的开头(每个新的“条目”都从“_index”开始):

{
"took": 83,
"timed_out": false,
"_shards": {
    "total": 3,
    "successful": 3,
    "failed": 0
},
"hits": {
    "total": 713628,
    "max_score": 1.3753585,
    "hits": [{
        "_index": "offentliggoerelser-prod-20161006",
        "_type": "offentliggoerelse",
        "_id": "urn:ofk:oid:5135592",
        "_score": 1.3753585,
        "_source": {
            "cvrNummer": 89986915,
            "indlaesningsId": "AUzWhUXw3pscZq1LGK_z",
            "sidstOpdateret": "2015-04-20T10:53:09.154Z",
            "omgoerelse": false,
            "regNummer": null,
            "offentliggoerelsestype": "regnskab",
            "regnskab": {
                "regnskabsperiode": {
                    "startDato": "2014-01-01",
                    "slutDato": "2014-12-31"
                }
            },
            "indlaesningsTidspunkt": "2015-04-20T11:10:53.529Z",
            "sagsNummer": "X15-AA-66-TA",
            "dokumenter": [{
                "dokumentUrl": "http://regnskaber.virk.dk/51968998/ZG9rdW1lbnRsYWdlcjovLzAzLzdlL2I5L2U2LzlkLzIxN2EtNDA1OC04Yjg0LTAwZGJlNzUwMjU3Yw.pdf",
                "dokumentMimeType": "application/pdf",
                "dokumentType": "AARSRAPPORT"
            }, {
                "dokumentUrl": "http://regnskaber.virk.dk/51968998/ZG9rdW1lbnRsYWdlcjovLzAzLzk0LzNlL2RjL2Q4L2I1NjUtNGJjZC05NzJmLTYyMmE4ZTczYWVhNg.xhtml",
                "dokumentMimeType": "application/xhtml+xml",
                "dokumentType": "AARSRAPPORT"
            }, {
                "dokumentUrl": "http://regnskaber.virk.dk/51968998/ZG9rdW1lbnRsYWdlcjovLzAzLzc5LzM3LzUwLzMxL2NjZWQtNDdiNi1hY2E1LTgxY2EyYjRmOGYzMw.xml",
                "dokumentMimeType": "application/xml",
                "dokumentType": "AARSRAPPORT"
            }],
            "offentliggoerelsesTidspunkt": "2015-04-20T10:53:09.075Z"
        }
    },

更具体地说,我试图提取所有“dokumentUrl”,其中“dokumentMimeType”等于“application/xhtml+xml”。在

当我使用这样简单的方法时:

^{pr2}$

我得到第一个符合条件的URL。但是我如何从符合上述条件的文件中创建一个包含所有url(全部713.628)的列表并将其导出到CSV文件?在

我可能应该提到,我的最终目标是创建一个程序,可以循环抓取我的url列表(我会把它留到另一篇文章中!)。在


Tags: 文件jsonfalsehttpindexapplicationxmldk
1条回答
网友
1楼 · 发布于 2024-09-30 16:39:42

希望我能理解这一点,@roganjosh也有类似的想法。您可以使用包含有用内容的列表来遍历特定的部分。所以,我们可以做一些类似的事情:

myURL = []
hits = data['hits']['hits']
for hit in hits:
    // Making the assumption here that you want all of the URLs associated with a given document
    document = hit['_source']['dokumenter']
    for url in document:
        if url['dokumentMimeType'] == "application/xhtml+xml":
            myURL.append(url['dokumentUrl'])

再一次,我希望我对您的JSON模式有足够的了解,这样就可以满足您的需要了。至少它能让你靠近。在

还看到了你关于CSV outputting的问题的另一部分。在

相关问题 更多 >