Python创建cookies,然后加载包含cookies的页面

Python创建cookies,然后加载包含cookies的页面,python,cookies,python-3.x,httplib2,Python,Cookies,Python 3.x,Httplib2,我想从python程序访问网页。 我必须设置cookies才能加载页面。 我使用了httplib2库,但没有找到如何添加自己的cookie resp_headers, content = h.request("http://www.theURL.com", "GET") 如何创建具有正确名称和值的cookie,将其添加到函数中,然后加载页面? 谢谢(希望会有帮助) 饼干 当自动化某些东西时,您通常需要“登录”以维护与服务器的某种会话/状态。有时,这是通过基于表单的身份验证和cookie实现的。


我想从python程序访问网页。 我必须设置cookies才能加载页面。
我使用了httplib2库,但没有找到如何添加自己的cookie

resp_headers, content = h.request("http://www.theURL.com", "GET")
如何创建具有正确名称和值的cookie,将其添加到函数中,然后加载页面?
谢谢(希望会有帮助)

饼干

当自动化某些东西时,您通常需要“登录”以维护与服务器的某种会话/状态。有时,这是通过基于表单的身份验证和cookie实现的。您向服务器发布一个表单,它会在传入的HTTP头中响应一个cookie。您需要在后续请求中将此cookie传递回服务器,以保持状态或使会话保持活动状态

下面是一个示例,说明如何在执行HTTP Post时处理Cookie

首先,让我们导入我们将使用的模块:

import urllib import httplib2 导入URL库 导入httplib2 现在,让我们定义我们需要的数据。在本例中,我们使用两个字段来表示用户名和密码,从而完成一个表单post

url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} url='1〕http://www.example.com/login' 正文={'USERNAME':'foo','PASSWORD':'bar'} headers={'Content-type':'application/x-www-form-urlencoded'} 现在我们可以发送HTTP请求:

http = httplib2.Http() response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) http=httplib2.http() 响应,内容=http.request(url,'POST',headers=headers,body=urllib.urlencode(body)) 此时,我们的“response”变量包含服务器返回的HTTP头字段的字典。如果返回了cookie,您将看到一个包含cookie值的“set cookie”字段。我们希望获取此值并将其放入后续请求的传出HTTP头中:

headers['Cookie'] = response['set-cookie'] 标题['Cookie']=响应['set-Cookie'] 现在,我们可以使用此标头发送请求,它将包含cookie,以便服务器能够识别我们

所以。。。这是整个故事的脚本。我们登录到一个站点,然后使用收到的cookie发出另一个请求:

#!/usr/bin/env python import urllib import httplib2 http = httplib2.Http() url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) headers = {'Cookie': response['set-cookie']} url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers) #!/usr/bin/env python 导入URL库 导入httplib2 http=httplib2.http() url='1〕http://www.example.com/login' 正文={'USERNAME':'foo','PASSWORD':'bar'} headers={'Content-type':'application/x-www-form-urlencoded'} 响应,内容=http.request(url,'POST',headers=headers,body=urllib.urlencode(body)) headers={'Cookie':响应['set-Cookie']} url='1〕http://www.example.com/home' 响应,内容=http.request(url'GET',headers=headers) 您可能需要添加另一个标头参数来指定另一个HTTP请求参数。

您也可以只使用urllib2库

http = httplib2.Http()
# get cookie_value here
headers = {'Cookie':cookie_value}
response, content = http.request("http://www.theURL.com", 'GET', headers=headers)
        import urllib2

        opener = urllib2.build_opener()
        opener.addheaders.append(('Cookie', 'cookie1=value1;cookie2=value2'))
        f = opener.open("http://www.example.com/")
        the_page_html = f.read()