KeyError:'数据在一个函数中但在其他函数中没有

时间:2017-02-24 18:50:19

标签: python python-2.7 python-requests

我正在尝试为我的智能镜子制作一个刮刀。我已经建立了一个python脚本来获取天气,污染水平和新闻和我没有得到的东西是为什么我在刮取数据而不是其他功能如天气和放大器时在这个功能块中出现错误的原因。污染程度。这是我遇到错误的代码:

def news(self):
        reddit1 = "https://www.reddit.com/r/LifeProTips/hot.json"
        reddit2 = "https://reddit.com/r/technology/hot.json"
        reddit3 = "https://reddit.com/r/Futurology/hot.json"
        reddit4 = "https://reddit.com/r/Showerthoughts/hot.json"
        lpt = requests.get(reddit1)
        tech = requests.get(reddit2)
        futu = requests.get(reddit3)
        show = requests.get(reddit4)
        lptd = json.loads(lpt.text)
        techd = json.loads(tech.text)
        futud = json.loads(futu.text)
        showd = json.loads(show.text)
        lpttitle = lptd['data']['children'][0]['data']['title']
        print(lpttitle)
        lptcontent = lptd['data']['children'][0]['data']['selftext']
        print(lptcontent)
        techttitle = techd['data']['children'][0]['data']['title']
        print(techtitle)
        techcontent = techd['data']['children'][0]['data']['selftext']
        print(techcontent)
        fututitle = futud['data']['children'][2]['data']['title']
        print(fututitle)
        futucontent = futud['data']['children'][0]['data']['selftext']
        print(futucontent)
        showtitle = showd['data']['children'][0]['data']['title']
        print(showdata)
        showcontent = showd['data']['children'][0]['data']['selftext']
        print(showcontent)
        lptdump = requests.put('firebaseurl',json={"Title": lpttitle, "Content": lptcontent})
        techdump = requests.put('firebaseurl',json={"Title": techtitle, "Content": techcontent})
        futudump = requests.put('firebaseurl',json={"Title": fututitle, "Content": futucontent})
        showdump = requests.put('firebaseurl',json={"Title": showtitle, "Content": showcontent})

但是对于这样的函数:

def pollution(self):
    url = "api"
    url2 = "api"
    pm10 = requests.get(url)
    pm25 = requests.get(url2)
    pm10leveldata = json.loads(pm10.text)
    pm25leveldata = json.loads(pm25.text)
    pm10level = pm10leveldata[0]['data']
    pm25level = pm25leveldata[0]['data']
    print pm10level
    print pm25level
    # pm10 = round(pm10level)
    # pm25 = round(pm25level)
    pdump = requests.put('firebaseurl',json={"Pm10": pm10level, "Pm25": pm25level})

没有错误。为什么我在那个问题上得到了一个关键错误,而不是像这样的函数

1 个答案:

答案 0 :(得分:3)

在尝试使用之前打印lptd

{'error': 429, 'message': 'Too Many Requests'}

你激怒了reddit。这可能发生在任何请求上,因此可能看起来好像错误正在跳跃。

顺便说一下,你可以直接从请求中获取json:

lptd = requests.get(reddit1).json()