5

私はこれを持っています:

import pycurl
import pprint
import json

c = pycurl.Curl()
c.setopt(c.URL, 'https://mydomainname.com')

c.perform()

上記のコードは、次のような辞書を返します。

{"name":"steve", "lastvisit":"10-02-2012", "age":12}

その辞書をループして、年齢だけを取得したいと思います。

age : 12

私は試した:

diction = {}
diction = c.perform()
pprint.pprint(diction["age"])

データが返されず、次のエラーが発生しました。

TypeError: 'NoneType' object is unsubscriptable
4

1 に答える 1

18

c.perform()何も返さないので、値をキャプチャするようにファイルのようなオブジェクトを構成する必要があります。BytesIOオブジェクトはそれを行います。呼び出しが完了した後、オブジェクトを呼び出すことができます.getvalue()

import pycurl
import pprint
import json
from io import BytesIO

c = pycurl.Curl()
data = BytesIO()

c.setopt(c.URL, 'https://mydomainname.com')
c.setopt(c.WRITEFUNCTION, data.write)
c.perform()

dictionary = json.loads(data.getvalue())
pprint.pprint(dictionary["age"])

と結婚していない場合は、はるかに簡単であるpycurlことがわかるかもしれません。requests

import pprint
import requests

dictionary = requests.get('https://mydomainname.com').json()
pprint.pprint(dictionary["age"])

標準ライブラリurllib.requestモジュールでさえ、以下を使用するよりも簡単ですpycurl

from urllib.request import urlopen
import pprint
import json

response = urlopen('https://mydomainname.com')
dictionary = json.load(response)
pprint.pprint(dictionary["age"])
于 2013-03-16T19:23:29.703 に答える