python - 在 python 中访问 JSON 项目
问题描述
我正在尝试遍历每个部分并打印出信息,但我不断收到 TypeError: list indices must be integers or slices,而不是 str 作为我的错误。这是我的数据:
[
{
"_id":"5be584e807b6f93c2cee00c4",
"updated":1541785331000,
"series":null,
"price":11,
"site":"cigar_auctioneer",
"d_no":null,
"wrapper_code":"OSC",
"shape":"petite corona",
"link":"https://www.cigarauctioneer.com/tatuaje-tattoo-needles-5-cigars/item-61689?auctionnum=3058524",
"item_id":61689,
"path":"tatuaje-tattoo-needles-5-cigars/item-61689?auctionnum=3058524",
"id":3058524,
"size":"4 1/2 x 38",
"sku":"CI-TTA-NEEDMZ-75",
"closes":"2018-11-12T23:13:00.000Z",
"is_cigar":true,
"number":null,
"name":"Tatuaje Tattoo Needles",
"package":"pack",
"vintage":null,
"wrapper":"oscuro",
"state":"open",
"num_units":5,
"closed":1542064380000,
"type":"pack",
"quantity":1
},
{
"_id":"5be4221207b6f92342f0ae23",
"updated":1541785907000,
"series":null,
"price":39,
"site":"cigar_auctioneer",
"d_no":null,
"wrapper_code":"OSC",
"shape":"torpedo",
"link":"https://www.cigarauctioneer.com/tatuaje-tattoo-bonita-10-pk-cigars/item-53476?auctionnum=3052556",
"item_id":53476,
"path":"tatuaje-tattoo-bonita-10-pk-cigars/item-53476?auctionnum=3052556",
"id":3052556,
"size":"6 1/4 x 52",
"sku":"CI-TTA-BONM10PK-75",
"closes":"2018-11-12T03:22:00.000Z",
"is_cigar":true,
"number":null,
"name":"Tatuaje Tattoo Bonita",
"package":"pack",
"vintage":null,
"wrapper":"oscuro",
"state":"open",
"num_units":5,
"closed":1541992920000,
"type":"pack",
"quantity":10
},
{
"_id":"5bde7e2a07b6f92cc36a75fb",
"origin":"nicaragua",
"updated":1541693111000,
"series":null,
"price":null,
"site":"cbid",
"d_no":null,
"number":null,
"shape":"robusto",
"is_cigar":true,
"link":"https://www.cigarbid.com/a/tatuaje-tattoo-caballero/3030156/",
"path":"a/tatuaje-tattoo-caballero/3030156/",
"id":3030156,
"unit":"box of 50",
"size":"5 x 50",
"sku":"TAT-PM-1008",
"closes":"2018-11-11T04:58:00.000Z",
"strength":"medium",
"name":"Tatuaje Tattoo Caballero",
"package":"box of 50",
"vintage":null,
"wrapper":"ecuador habano",
"exdata":{
"skuId":"TAT-PM-1008",
"list":"PLP>Search",
"isImpression":true,
"lot":{
"category":"Free Fall Cigar Auction",
"closes":"2018-11-10T23:58:00-05:00",
"lotId":3030156,
"name":"Tatuaje Tattoo Caballero (Robusto) (5.0\"x50) Box of 50",
"engine":"DutchLoop",
"status":"Open",
"opens":"2018-11-04T00:13:00-04:00"
},
"fullName":"Tatuaje Tattoo Caballero (50)",
"type":"Handmade Cigars",
"id":154551,
"pack":"Box of 50"
},
"state":"open",
"num_units":null,
"closed":1541912280000,
"type":"box of 50",
"quantity":50
},
{
"_id":"5be2d68207b6f90b492ae0fd",
"updated":1541786158000,
"series":null,
"price":195,
"site":"cigar_auctioneer",
"d_no":null,
"wrapper_code":"OSC",
"shape":"torpedo",
"link":"https://www.cigarauctioneer.com/tatuaje-tattoo-bonito-cigars/item-45795?auctionnum=3045899",
"item_id":45795,
"path":"tatuaje-tattoo-bonito-cigars/item-45795?auctionnum=3045899",
"id":3045899,
"size":"6 1/4 x 52",
"sku":"CI-TTA-BONM-75",
"closes":"2018-11-11T02:45:00.000Z",
"is_cigar":true,
"number":null,
"name":"Tatuaje Tattoo Bonito",
"package":"box",
"vintage":null,
"wrapper":"oscuro",
"state":"open",
"num_units":1,
"closed":1541904300000,
"type":"box",
"quantity":50
},
{
"_id":"5be07b8d07b6f95b9a151a83",
"origin":"nicaragua",
"updated":1541787982000,
"series":null,
"price":3,
"site":"cbid",
"d_no":null,
"number":null,
"shape":"robusto",
"is_cigar":true,
"link":"https://www.cigarbid.com/a/tatuaje-tattoo-caballero/3029330/",
"path":"a/tatuaje-tattoo-caballero/3029330/",
"id":3029330,
"unit":"single",
"size":"5 x 50",
"sku":"TAT-PM-1001",
"closes":"2018-11-10T04:48:00.000Z",
"strength":"medium",
"name":"Tatuaje Tattoo Caballero",
"package":"single",
"vintage":null,
"wrapper":"ecuador habano",
"exdata":{
"skuId":"TAT-PM-1001",
"list":"PLP>Search",
"isImpression":true,
"lot":{
"category":"Cigar Singles",
"closes":"2018-11-09T23:48:00-05:00",
"minimumOffer":3,
"lotId":3029330,
"name":"Tatuaje Tattoo Caballero (Robusto) (5.0\"x50) Single",
"engine":"English",
"status":"Open",
"units":2,
"opens":"2018-11-05T12:00:00-05:00"
},
"fullName":"Tatuaje Tattoo Caballero (robusto) (Single)",
"type":"Handmade Cigars",
"id":161996,
"pack":"Single"
},
"state":"open",
"num_units":2,
"closed":1541825280000,
"type":"single",
"quantity":1
},
{
"_id":"5be190b607b6f9711c751df4",
"updated":1541786729000,
"series":null,
"price":19,
"site":"cigar_auctioneer",
"d_no":null,
"wrapper_code":"OSC",
"shape":"torpedo",
"link":"https://www.cigarauctioneer.com/tatuaje-tattoo-bonita-5-pk-cigars/item-53475?auctionnum=3048388",
"item_id":53475,
"path":"tatuaje-tattoo-bonita-5-pk-cigars/item-53475?auctionnum=3048388",
"id":3048388,
"size":"6 1/4 x 52",
"sku":"CI-TTA-BONM5PK-75",
"closes":"2018-11-10T03:05:00.000Z",
"is_cigar":true,
"number":null,
"name":"Tatuaje Tattoo Bonita",
"package":"pack",
"vintage":null,
"wrapper":"oscuro",
"state":"open",
"num_units":5,
"closed":1541819100000,
"type":"pack",
"quantity":5
},
{
"_id":"5be08ae107b6f95e788e0999",
"origin":"nicaragua",
"updated":1541786947000,
"series":null,
"price":14.5,
"site":"cbid",
"d_no":null,
"number":null,
"shape":"robusto",
"is_cigar":true,
"link":"https://www.cigarbid.com/a/tatuaje-tattoo-caballero/3025943/",
"path":"a/tatuaje-tattoo-caballero/3025943/",
"id":3025943,
"unit":"pack of 5",
"size":"5 x 50",
"sku":"TAT-PM-1003",
"closes":"2018-11-10T00:58:00.000Z",
"strength":"medium",
"name":"Tatuaje Tattoo Caballero",
"package":"pack of 5",
"vintage":null,
"wrapper":"ecuador habano",
"exdata":{
"skuId":"TAT-PM-1003",
"list":"PLP>Search",
"isImpression":true,
"lot":{
"category":"5-Packs of Cigars",
"closes":"2018-11-09T19:58:00-05:00",
"minimumOffer":14.5,
"lotId":3025943,
"name":"Tatuaje Tattoo Caballero (Robusto) (5.0\"x50) Pack of 5",
"engine":"English",
"status":"Open",
"units":9,
"opens":"2018-11-05T12:35:00-05:00"
},
"fullName":"Tatuaje Tattoo Caballero - 5-Pack",
"type":"Handmade Cigars",
"id":154550,
"pack":"Pack of 5"
},
"state":"open",
"num_units":9,
"closed":1541811480000,
"type":"pack of 5",
"quantity":5
},
{
"_id":"5be18ff707b6f9711c751d87",
"updated":1541786468000,
"series":null,
"price":12,
"site":"cigar_auctioneer",
"d_no":null,
"wrapper_code":"OSC",
"shape":"robusto",
"link":"https://www.cigarauctioneer.com/tatuaje-tattoo-caballero-5-pack-cigars/item-48230?auctionnum=3051568",
"item_id":48230,
"path":"tatuaje-tattoo-caballero-5-pack-cigars/item-48230?auctionnum=3051568",
"id":3051568,
"size":"5 x 50",
"sku":"CI-TTA-CABM5PK-75",
"closes":"2018-11-10T00:17:00.000Z",
"is_cigar":true,
"number":null,
"name":"Tatuaje Tattoo Caballero",
"package":"pack",
"vintage":null,
"wrapper":"oscuro",
"state":"open",
"num_units":1,
"closed":1541809020000,
"type":"pack",
"quantity":5
}
]
这是我试图访问它的代码
import os
import time
import re
import json
import requests, urllib.parse
from bs4 import BeautifulSoup, element
if __name__ == "__main__":
with requests.Session() as se:
searchTerm = "tatuaje+tattoo"
se.headers = {
"X-Requested-With": "XMLHttpRequest",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36",
"Referer": "https://herf.io/bids?search="+searchTerm,
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Accept-Encoding":"gzip, deflate, br",
}
data = [
"search="+searchTerm,
"types=",
"sites=",
]
cookies = {
"Cookie": "connect.sid=s%3ANYNh5s6LzCVWY8yE9Gra8lxj9OGHPAK_.vGiBmTXvfF4iDScBF94YOXFDmC80PQxY%2FX9FLQ23hYI"}
url = "https://herf.io/bids/search/open"
price = "https://herf.io/bids/search/stats"
openAuctions = "https://herf.io/bids/search/open"
closedAuctions = "https://herf.io/bids/search/closed"
#req = se.post(price,data="&".join(data),cookies=cookies,verify=False)
reqAuctions = se.post(openAuctions,data="&".join(data),cookies=cookies,verify=False)
#str = req.json()
strAuctions = reqAuctions.json()
print(strAuctions['_id'])
print(strAuctions['link'])
我假设问题是顶层没有 dict 键的事实?环顾四周,其他人都在谈论使用 for 循环遍历顶级字典,但我不确定没有它如何访问?
谢谢。
解决方案
你的猜测是对的。顶层是一个数组,而不是字典。如果你只想要第一个条目,你可以做
print(strAuctions[0]['_id'])
print(strAuctions[0]['link'])
要输出每个条目的信息,请使用
for auction in strAuctions:
print(auction['_id'])
print(auction['link'])
推荐阅读
- c# - 自动实现的属性是否使用私有构造函数进行初始化
- vue.js - 从 nuxtjs 中的外部 js 文件访问存储
- php - Autodesk Forge 上传导致 504 网关超时
- javascript - 如何使用 if 语句更改变量
- javascript - 用作回调的javascript对象/类方法未被调用但没有错误
- xamarin.forms - 系统引用有黄色三角形 Xamarin.Forms iOS
- android - FirebaseAuth.signInWithEmailAndPassword() 不适用于新的 firebase sdk 版本
- c# - 确定一棵树是否在线性时间内平衡
- qt - qmake:无法打开配置文件
- python - 如何使用 pipenv 从 github 安装包