python - 抓取以 [some text] 开头的 json 对象

标签 python beautifulsoup

我正在使用 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/

相关文章:

python - 将具有多个循环和逻辑的代码简化为查询集聚合

python - 声明式 GTK

python - BeautifulSoup - 按标签内的文本搜索

python - 用 Beautiful Soup 解析 Html 返回空列表

python - 使用 BeautifulSoup 通过 Python 从表中获取信息

python - 如何使用 Beautiful Soup 获取 CSS 链接

python - 根据另一个列表删除列表中的项目

python - celery 任务在 Django 框架中不起作用

python - 图像未显示在 pygame 屏幕上

python - BeautifulSoup 不会提取所有元素