python 爬虫 请求这样的json怎么拿到里面的options

python 爬虫 请求这样的json怎么拿到里面的options 试了
productWeb = requests.get ( jsonurl,cookies=cookies,headers=headers )
ProductData = productWeb.json ()
print(ProductData[1])
print(ProductData["productDataWithOptions"])都拿不到里面的东西


```python
{
    'isValidated': False,
    'productDataWithOptions': {
        
        
        'nonSellableMinPurchasePrice': None,
        'nonSellablePercentSaved': 0,
        'options': [
            {
                'displayOrder': 1,
                'name': 'CushionColor',
                'optionDisplayType': 'Thumbnail',
                'optionID': 602,
                'optionImageDriverFlag': True,
                'optionLayoutType': 'GRID',
                'values': [
                    {
                        'availableFlag': True,
                        'maxDisplayPrice': 1734.99,
                        'maxFromSalePrice': 0,
                        'maxListPrice': 3259.99,
                        'maxOurPrice': 1734.99,
                        'maxOversizeItemFee': 0,
                        'minDisplayPrice': 1734.99,
                        'minFromSalePrice': 0,
                        'minListPrice': 3259.99,
                        'minOurPrice': 1734.99,
                        'minOversizeItemFee': 0,
                        'optionImg': '//content.haycdn.com/mgen/options: TKCL290_602_Beige.jpg',
                        'optionValueID': 161254043,
                        'percentSaved': 0,
                        'personalizationNotRequired': False,
                        'priceFlag': 'NORMAL',
                        'selectedFlag': False,
                        'swatchImg': None,
                        'temporaryPriceEndDate': None,
                        'text': 'Beige',
                        'valueOrder': 3
                    }
                    
                ],
                'isSelected': False,
                'selectedValueIndex': -1,
                'swatchImages': [

                ],
                'valuesSamePrice': False,
                'numAvailableValues': 11,
                'isRequired': True,
                'declineOptionText': None,
                'layoutType': 'GRID',
                'shouldDisableGridView': False
            }
        ],
        'optionSkus': [

        ],
        'pageName': 'tkclassicsflorencewicker7piecepatioconversationsetwithendtableand2setsofcushioncovers',
        'parentFirstReviewEligibleFlag': False,
        'parentFreeShippingFlag': True,
        'parentIsFastShipping': False,
        'parentShippingDisplayFlag': True,
        'partnerOnlyFlag': False,
        'percentSaved': 3,
        'personalization': 'no',
        'personalizationCharLimit': '0',
        'prefix': '',
        'prefixHayneedle': None,
        'priceFlag': 'NORMAL',
        'primarySite': 669,
        'productID': 'TKCL290',
        'productBanners': None,
        'promotions': [

        ],
        'rebateAmount': 0,
        'rebateFlag': False,
        'rebateID': 0,
        'relatedPreconfigSku': '',
        'returnPolicy': 'Youmayreturnmostnew,
        unused,
         'sellableFlag': True,
         'spinImageFlag': False,
        'status': 'IN_STOCK',
        'suffixHayneedle': None,
        'supplierAddendum': None,
        'temporaryPriceEndDate': None,
        'variationsInStock': 11,
        'warranty': None,
        'isNewProduct': False
    },
    'oneOptionSelected': False,
    'optionImageDriver': '',
    'requiredPersonalizationIDs': [

    ],
    'hasPersonalization': False,
    'selectedVariation': None,
    'selectedVariationName': '',
    'loyaltyPoints': None,
    'displayPrice': None
}


```

根据你提供的 json,ProductData 实际上是一个字典对象,因此可以使用字典的键来访问其值。而 productDataWithOptions 键对应的值也是一个字典,其中包含了包含 options 的键值对。因此,你可以像下面这样访问 options 列表:

productWeb = requests.get(jsonurl, cookies=cookies, headers=headers)
productData = productWeb.json()
options = productData['productDataWithOptions']['options']
print(options)

这将会输出 options 列表中包含的所有元素。如果你只想访问列表中的第一个元素,你可以使用索引 0(Python 中的列表索引从 0 开始):

firstOption = productData['productDataWithOptions']['options'][0]
print(firstOption)

这将输出第一个选项中包含的所有信息。

ProductData = {
    'isValidated': False,
    'productDataWithOptions': {

        'nonSellableMinPurchasePrice': None,
        'nonSellablePercentSaved': 0,
        'options': [
            {
                'displayOrder': 1,
                'name': 'CushionColor',
                'optionDisplayType': 'Thumbnail',
                'optionID': 602,
                'optionImageDriverFlag': True,
                'optionLayoutType': 'GRID',
                'values': [
                    {
                        'availableFlag': True,
                        'maxDisplayPrice': 1734.99,
                        'maxFromSalePrice': 0,
                        'maxListPrice': 3259.99,
                        'maxOurPrice': 1734.99,
                        'maxOversizeItemFee': 0,
                        'minDisplayPrice': 1734.99,
                        'minFromSalePrice': 0,
                        'minListPrice': 3259.99,
                        'minOurPrice': 1734.99,
                        'minOversizeItemFee': 0,
                        'optionImg': '//content.haycdn.com/mgen/options: TKCL290_602_Beige.jpg',
                        'optionValueID': 161254043,
                        'percentSaved': 0,
                        'personalizationNotRequired': False,
                        'priceFlag': 'NORMAL',
                        'selectedFlag': False,
                        'swatchImg': None,
                        'temporaryPriceEndDate': None,
                        'text': 'Beige',
                        'valueOrder': 3
                    }

                ],
                'isSelected': False,
                'selectedValueIndex': -1,
                'swatchImages': [

                ],
                'valuesSamePrice': False,
                'numAvailableValues': 11,
                'isRequired': True,
                'declineOptionText': None,
                'layoutType': 'GRID',
                'shouldDisableGridView': False
            }
        ],
        'optionSkus': [

        ],
        'pageName': 'tkclassicsflorencewicker7piecepatioconversationsetwithendtableand2setsofcushioncovers',
        'parentFirstReviewEligibleFlag': False,
        'parentFreeShippingFlag': True,
        'parentIsFastShipping': False,
        'parentShippingDisplayFlag': True,
        'partnerOnlyFlag': False,
        'percentSaved': 3,
        'personalization': 'no',
        'personalizationCharLimit': '0',
        'prefix': '',
        'prefixHayneedle': None,
        'priceFlag': 'NORMAL',
        'primarySite': 669,
        'productID': 'TKCL290',
        'productBanners': None,
        'promotions': [

        ],
        'rebateAmount': 0,
        'rebateFlag': False,
        'rebateID': 0,
        'relatedPreconfigSku': '',
        'returnPolicy': 'Youmayreturnmostnew,unused',
        'sellableFlag': True,
        'spinImageFlag': False,
        'status': 'IN_STOCK',
        'suffixHayneedle': None,
        'supplierAddendum': None,
        'temporaryPriceEndDate': None,
        'variationsInStock': 11,
        'warranty': None,
        'isNewProduct': False
    },
    'oneOptionSelected': False,
    'optionImageDriver': '',
    'requiredPersonalizationIDs': [],
    'hasPersonalization': False,
    'selectedVariation': None,
    'selectedVariationName': '',
    'loyaltyPoints': None,
    'displayPrice': None
}
# 设你的json转为dict后的数据为ProductData
# 获取options内容
print(ProductData['productDataWithOptions']['options'])
# 获取options里name的内容
print(ProductData['productDataWithOptions']['options'][0]['name'])

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7411807
  • 这篇博客也不错, 你可以看下python批量修改json文件中的指定字符
  • 除此之外, 这篇博客: python中json用法详解中的 2、处理request请求返回的json数据: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 有2种方法可以处理request返回的数据:

    1.对request发起请求返回的响应对象进行.json()操作,.json操作返回的是一个字典类型(如果返回的结果为空时则会报错),如下:

    2.对request请求得到的响应对象中的text数据进行json.loads(text)操作,操作后返回的是字典类型(建议使用这种方法,使用前判断text是否为空,为空也会报错),如下:

  • 您还可以看一下 陈雷老师的20天掌握Python开发入门实战课程中的 json模块小节, 巩固相关知识点