首页 > 解决方案 > 动态抓取 JSON 值

问题描述

我想从 JSON 响应中抓取一些数据。这是链接

我需要lessonTypes. 我想导出用逗号分隔的所有值。所以Theorieopleidingen有4个值Beroepsopleidingen有8个等等。

在此处输入图像描述

我想动态抓取,所以即使值的数量发生变化,它也总是用逗号分隔所有内容。

对不起,如果我的解释是周。

标签: pythonjsonweb-scrapingscrapy

解决方案


既然它是一个 JSON 对象,为什么不使用 justrequests并做你想做的事情(使用数据)。

例如:

import requests
url = "https://www.cbr.nl/web/show?id=289168&langid=43&channel=json&cachetimeout=-1&elementHolder=289170&ssiObjectClassName=nl.gx.webmanager.cms.layout.PagePart&ssiObjectId=285674&contentid=3780&examtype=B"
for value in requests.get(url).json()['lessonTypes'].values():
    print(value)

输出:

['Motor', 'Auto', 'Bromfiets', 'Tractor']
['Bus', 'Aanhangwagen achter bus', 'Vrachtauto', 'Aanhangwagen achter vrachtauto', 'Heftruck', 'ADR', 'Taxi', 'Tractor']
['Aangepaste auto', 'Automaat personenauto']
['Motor', 'Auto', 'Aanhangwagen achter auto', 'Bromfiets', 'Brommobiel']

编辑:

要访问单个键及其值,您可能需要尝试以下操作:

import requests
url = "https://www.cbr.nl/web/show?id=289168&langid=43&channel=json&cachetimeout=-1&elementHolder=289170&ssiObjectClassName=nl.gx.webmanager.cms.layout.PagePart&ssiObjectId=285674&contentid=3780&examtype=B"
lesson_types = requests.get(url).json()['lessonTypes']
print(list(lesson_types.keys()))
print("\n".join(lesson_types['Theorieopleidingen']))

输出:

['Theorieopleidingen', 'Beroepsopleidingen', 'Bijzonderheden', 'Praktijkopleidingen']
Motor
Auto
Bromfiets
Tractor

推荐阅读