Заголовок ответа Python urllib2

Я пытаюсь извлечь заголовок ответа URL-запроса. Когда я использую firebug для анализа вывода ответа URL-запроса, он возвращает:

Content-Type text/html 

Однако, когда я использую код python:

 urllib2.urlopen(URL).info() 

полученный результат возвращает:

 Content-Type: video/x-flv 

Я новичок в python и в веб-программировании в целом; любое полезное понимание очень ценится. Кроме того, если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Заранее благодарим за чтение этого сообщения

    6 Solutions collect form web for “Заголовок ответа Python urllib2”

    Попробуйте запросить Firefox. Вы можете увидеть заголовки запросов в Firebug, поэтому добавьте их в свой объект запроса:

     import urllib2 request = urllib2.Request('http://your.tld/...') request.add_header('User-Agent', 'some fake agent string') request.add_header('Referer', 'fake referrer') ... response = urllib2.urlopen(request) # check content type: print response.info().getheader('Content-Type') 

    Там также есть HTTPCookieProcessor, который может сделать его лучше, но я не думаю, что он вам понадобится в большинстве случаев. Взгляните на документацию python:

    http://docs.python.org/library/urllib2.html

    Content-Type text / html

    Неужели так, без двоеточия?

    Если это так, это может объяснить это: это недопустимый заголовок, поэтому он игнорируется, поэтому urllib угадывает тип контента, глядя на имя файла. Если в конце URL-адреса имеет значение «.flv», он предположит, что тип должен быть video/x-flv .

    Это своеобразное несоответствие может быть объяснено различными заголовками (возможно, из них), которые отправляются двумя запросами – можете ли вы проверить, что …? Или, если Javascript работает в Firefox (который, как я полагаю, вы используете, когда вы используете firebug?), Поскольку он определенно НЕ работает в случае Python – «все ставки отключены», как говорится 😉 ,

    Имейте в виду, что веб-сервер может возвращать разные результаты для одного и того же URL-адреса на основе различий в запросе. Например, согласование типа контента: запрашивающий может указать список типов контента, которые он примет, и сервер может возвращать разные результаты, чтобы попытаться удовлетворить различные потребности.

    Кроме того, вы можете получить страницу с ошибкой для одного из ваших запросов, например, потому что она неверна, или у вас нет файлов cookie, которые правильно идентифицируют вас и т. Д. Посмотрите на сам ответ, чтобы узнать, что вы получаете.

    в соответствии с http://docs.python.org/library/urllib2.html существует только get_header() и ничего о getheader .

    Спросите, потому что ваш код отлично работает

     response.info().getheader('Set cookie') 

    но как только я выполню

     response.info().get_header('Set cookie') 

    я получил:

     Traceback (most recent call last): File "baza.py", line 11, in <module> cookie = response.info().get_header('Set-Cookie') AttributeError: HTTPMessage instance has no attribute 'get_header' 

    edit: Более того
    response.headers.get('Set-Cookie') отлично работает, не упоминается в urlib2 doc ….

    import urllib.request

    fhand = urllib.request.urlopen (' http://data.pr4e.org/intro-short.txt ')

    печать (fhand.info ())

    Python - лучший язык программирования в мире.