简体   繁体   中英

FInding certain data from key in json output python

I am trying to get a key code from a json output. But i cannot seem to get it, I get errors left and right. Here is my code.

import requests
import time
import threading
import json

def ThreadRequest():
    scrape_url = "https://pastebin.com/api_scraping.php?limit=1"
    json_data = requests.get(scrape_url)
    python_obj = json.loads(json_data.text)
    print python_obj["key"]

ThreadRequest()

I either get

TypeError: list indices must be integers, not str
ValueError: No JSON object could be decoded
TypeError: expected string or buffer

I have tried many ways, different ways, even parsing by using .split() function. I cannot seem to get the understanding of how to parse in json.

Here is the API output

[
    {
        "scrape_url": "https://pastebin.com/api_scrape_item.php?i=rkFbtGSj",
        "full_url": "https://pastebin.com/rkFbtGSj",
        "date": "1516914453",
        "key": "rkFbtGSj",
        "size": "3031",
        "expire": "0",
        "title": "",
        "syntax": "text",
        "user": ""
    }
]   

The first thing is that the requests module has a built-in JSON parsing method so just use that rather than trying to use the raw text response. Change:

python_obj = json.loads(json_data.text)

To:

python_obj = json_data.json()

Second, the data that you're interested in is in a dictionary. However, that dictionary is contained within a list. Take the 0th index of that list to get access to the dictionary, then access that by key (in this case, also called "key").

my_value = python_obj[0]['key']

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM