我正在使用 BS4 浏览电子商务网站,我需要检查库存。 大多数产品我都可以通过抓取产品 json 来检查库存:
stock = (jsonData['stocks']['XZ32_'])
因为 json 对象类似于:
"stocks": {
"XZ32_": 81
}
但有时它会发生变化,看起来像这样:
"stocks": {
"XZ32_33935": 81
}
每个产品的这个数字都会变化。
问题:有没有办法获取以“XZ32_”开头的 json 对象中的键的值?
最佳答案
您可以使用此示例获取以 XZ32_
开头的键的值:
jsonData = {
"stocks": {
"XZ32_33935": 81
}
}
xz32 = next(jsonData['stocks'][k] for k in jsonData['stocks'] if k.startswith('XZ32_'))
print(xz32)
打印:
81
更详细的示例(如果未找到 key ,则返回default
):
jsonData = {
"stocks": {
"XZ32_33935": 81
}
}
def get_value(d, key_start, default=None):
for k in d:
if k.startswith(key_start):
return d[k]
return default
x32 = get_value(jsonData['stocks'], 'XZ32_')
print(x32)
关于python - 抓取以 [some text] 开头的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63886728/