python获取并重新使用session-cookie帮助吗?

时间:2012-05-18 23:39:15

标签: python urllib2 session-cookies

所以我试图从12bet.co.uk抓取数据。我有以下python代码针对我想要的信息:

import urllib2
sid = 'lgvvtb45xlqtwe45wjp3wy45'  # value copied from a Firefox session
url = 'http://eu.12bet.co.uk/EuroSite/Match_data.aspx?Scope=Sport&Id=1&Sport=1&Market=d&RT=W&Game=0&OddsType=1'
http_req_data = None
http_req_header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0',
    'Accept' : 'text/html',
    'Accept-Language' : 'en-us,en;q=0.5',
    'DNT' : '1',
    'Referer' : 'http://eu.12bet.co.uk/EuroSite/Euro_index.aspx',
    'Cookie' : 'MuSou_eu=20110303; iom_territory=UK; LangKey=en; OddsType_12BETUUS01015=1; ASP.NET_SessionId='+sid+'',
    'Connection' : 'keep-alive'}
web_req = urllib2.Request(url, http_req_data, http_req_header)  # create request object
web_resp = urllib2.urlopen(web_req)  # open the request object and return a handle
print web_resp.info()

当我从Firefox会话中复制/粘贴sid的值时,这很好(Content-Length很大=返回了很多好的内容)。 但是,如果我尝试以编程方式获取sid的值,首先运行类似下面的代码,然后当我使用下面代码找到的sid值运行上面的代码时,我没有得到任何内容:

import urllib2, re
url='http://eu.12bet.co.uk/EuroSite/Euro_index.aspx'
http_req_data = None
http_req_header = {'User-agent' : 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0',
    'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language' : 'en-us,en;q=0.5',
    'DNT' : '1',
    'Connection' : 'keep-alive'}
web_req = urllib2.Request(url, http_req_data, http_req_header)  # create request object
web_resp = urllib2.urlopen(web_req)  # open the request object and return a handle
print '==== HEADERS ===='
print web_resp.info()
headers = dict(web_resp.info())
cookies = headers['set-cookie']
print '==== MISC ===='
print "cookies>"+cookies+"<"
sid = re.search('ASP.NET_SessionId=(\w+)',cookies).group(1)
print "sid>"+sid+"<"

我一直在研究这个问题,我无法解决这个问题。我正在努力。有人可以告诉我这里有什么问题吗?提前许多人。

1 个答案:

答案 0 :(得分:0)

第一个响应中有另一个cookie值,每次都不同,需要捕获并发送回每个未来的请求以保持状态/一致性。