web-dev-qa-db-ja.com

python urllibを使用してヘッダーを設定するにはどうすればよいですか?

私はpythonのurllibにかなり慣れています。私がする必要があるのは、サーバーに送信されるリクエストのカスタムヘッダーを設定することです。具体的には、Content-typeおよびAuthorizationsヘッダーを設定する必要があります。 pythonのドキュメントを調べましたが、見つけることができませんでした。

64
ewok

rllib2 を使用してHTTPヘッダーを追加する:

ドキュメントから:

import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
resp = urllib2.urlopen(req)
content = resp.read()
78
Corey Goldberg

Python 3とPython 2の両方で、これは機能します:

try:
    from urllib.request import Request, urlopen  # Python 3
except ImportError:
    from urllib2 import Request, urlopen  # Python 2

req = Request('http://api.company.com/items/details?country=US&language=en')
req.add_header('apikey', 'xxx')
content = urlopen(req).read()

print(content)
73
Cees Timmerman

Urllib2を使用してRequestオブジェクトを作成し、それをurlopenに渡します。 http://docs.python.org/library/urllib2.html

「古い」urllibを実際に使用することはもうありません。

req = urllib2.Request("http://google.com", None, {'User-agent' : 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'})
response = urllib2.urlopen(req).read()

未テスト....

15
sleeplessnerd

複数のヘッダーの場合、次のようにします。

import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('param1', '212212')
req.add_header('param2', '12345678')
req.add_header('other_param1', 'sample')
req.add_header('other_param2', 'sample1111')
req.add_header('and_any_other_parame', 'testttt')
resp = urllib2.urlopen(req)
content = resp.read()
1
Gil Allen