2

Request、urlopen、および JSONDecoder().decode() の使用に少し混乱しています。

現在私は持っています:

hdr = {'User-agent' : 'anything'}  # header, User-agent header describes my web browser

サーバーがこれを使用して、受け入れ可能なブラウザーを判断していると思いますか? わからない

私のURLは:

url = 'http://wwww.reddit.com/r/aww.json'

req 変数を設定します

req = Request(url,hdr)  #request to access the url with header
json = urlopen(req).read()   # read json page

ターミナルで urlopen を使用しようとしたところ、次のエラーが発生しました。

TypeError: must be string or buffer, not dict # This has to do with me header?

data = JSONDecoder().decode(json)   # translate json data so I can parse through it with regular python functions?

なぜ私がTypeError

4

1 に答える 1

4

のドキュメントをRequest見ると、コンストラクターの署名が実際にはRequest(url, data=None, headers={}, …). したがって、URL の後の 2 番目のパラメータは、リクエストで送信するデータです。ただし、代わりにヘッダーを設定する場合は、headersパラメーターを指定する必要があります。

これは 2 つの異なる方法で行うことができます。Noneデータパラメータとして渡すか:

Request(url, None, hdr)

ただし、これにはdataパラメーターを明示的に渡す必要があり、不要な影響を引き起こさないようにデフォルト値を渡す必要があります。したがって、代わりに、指定せずに代わりに明示的headerにパラメーターを渡すように Python に指示できdataます。

Request(url, headers=hdr)
于 2013-11-13T23:56:22.367 に答える