Як встановити заголовки, використовуючи urllib python?


80

Я досить новачок у urllib python. Що мені потрібно зробити, це встановити власний заголовок для запиту, який надсилається на сервер. Зокрема, мені потрібно встановити заголовки Content-type та Authorizations. Я вивчив документацію до python, але не зміг її знайти.

Відповіді:


94

додавання заголовків HTTP за допомогою urllib2 :

з документів:

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

88

І для 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)

Чи можемо ми зробити те саме із запитами q.add_header ('apikey', 'xxx')
user3378649

Що ви маєте на увазі, @ user3378649?
Cees Timmerman

2
@ user3378649 можливо ви маєте на увазі використовувати користувацькі заголовкиrequests пакету python
WeizhongTu

1
ЦЯ відповідь - тисячу разів ТАК (дякую!). Я годинами намагаюся знайти спільний інтерфейс для python 2 і 3 (між urllib, urllib2 та urllib3).
Беорн Гарріс,

19

Використовуйте urllib2 і створіть об'єкт "Запит", який потім вручите 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()

неперевірене ....


2

Для кількох заголовків виконайте такі дії:

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()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.