如何从 urllib.request 获取 cookie?

Mwe*_*erf 7 python cookies urllib python-3.x

如何从 cookie 中获取 cookie urllib.request

import urllib.request
import urllib.parse

data = urllib.parse.urlencode({
    'user': 'user',
    'pass': 'pass'
})
data = data.encode('utf-8')

request = urllib.request.urlopen('http://example.com', data)
print(request.info())
Run Code Online (Sandbox Code Playgroud)

request.info() 返回 cookie 但不是非常有用的方式。

Imt*_*que 6

response.info()是一个dict类型对象。这样你就可以解析你需要的任何信息。这是一个用python3编写的demo:

from urllib import request
from urllib.error import HTTPError

# declare url, header_params 

req = request.Request(url, data=None, headers=header_params, method='GET')
try:
    response = request.urlopen(req)

    cookie = response.info().get_all('Set-Cookie')
    content_type = response.info()['Content-Type']
except HTTPError as err:
    print("err status: {0}".format(err))
    return
Run Code Online (Sandbox Code Playgroud)

您现在可以cookie根据您的应用程序需求解析变量。


小智 -1

我认为现在使用requests包是一个更好的选择。尝试以下示例代码,该代码显示您访问时谷歌设置 cookie:

import requests

url = "http://www.google.com"
r = requests.get(url,timeout=5)
if r.status_code == 200:
    for cookie in r.cookies:
        print(cookie)            # Use "print cookie" if you use Python 2.
Run Code Online (Sandbox Code Playgroud)

给出:

Cookie NID=67=n0l3ME1Jl3-wwlH7oE5pvxJ_CfU12hT5Kh65wh21bvE3hrKFAo1sJVj_UcuLCr76Ubi3yxENROaYNEitdgW4IttL43YZGlf8xAPl1IbzoLG31KP5U2tiP2y4DzVOJ2fA for .google.se/

Cookie PREF=ID=ce66d1288fc0d977:FF=0:TM=1407525509:LM=1407525509:S=LxQv7q8fju-iHJPZ for .google.se/
Run Code Online (Sandbox Code Playgroud)

  • 我对此投了否决票,因为它没有回答问题 - 这是很好的建议,但不是答案。 (4认同)