2013-04-05 69 views
1

我正在尝试访问需要cookie的网站。使用urllib2和cookielib我能够从网站获得响应。该HTML打印通知我,我没有得到与线接入:HTTPCookieProcessor未提供Cookie

<h2>Cookies Disabled</h2> 
<p> class="share-prompt"><strong>Cookies must be enabled.</strong></p> 

我能不明白的地方,我错了。代码如下:

import urllib2, cookielib 

cookieJar = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.ProxyHandler({'http':"http://216.208.156.69:3128"}),urllib2.HTTPCookieProcessor(cookieJar)) 
request = urllib2.Request("[website]") 
response = opener.open(request) 

print response.read() 

任何人都可以看到我出错了吗?

干杯,

回答

2

代码看起来不错。例如,从这个

import urllib, urllib2, cookielib 

cookieJar = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) 
params = urllib.urlencode({'cookie_name': 'cookie_value'}) 
request = urllib2.Request('http://httpbin.org/cookies/set?' + params) 
opener.open(request) 
request = urllib2.Request('http://httpbin.org/cookies') 
response = opener.open(request) 
print response.read() 

输出

{ 
    "cookies": { 
    "cookie_name": "cookie_value" 
    } 
} 

没有向我们展示你使用没有多少可以做的URL。

+0

我不明白为什么在你的第4行我需要定义cookie - 这不是网站应该传给我的东西吗? – tgunn 2013-04-08 14:08:51

+0

我对此进行了更深入的研究 - 没有任何东西从网站存储到cookieJar中。通过比较,我跑到它指向google.com并收到4个饼干。 hummm .... – tgunn 2013-04-08 14:28:20

+0

@tgunn *(...)这不是网站应该传给我的东西吗?*是的,通常服务器发送cookie并且浏览器将它们发送回去。在这里,我使用了非常好的httpbin.org服务,可以指示我发送cookie。这样我就可以模拟* normal * web服务器的行为。在你真实的代码中,你不需要像这样自行设置cookie。 *通过比较,我将它指向google.com并收到4个cookie。*有时,Web服务器根据您发送的用户代理http标题而采取不同的行为。尝试更改此标题以匹配您的浏览器发送的内容。 – 2013-04-08 15:39:09