0

所以我正在尝试从 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 的值时,这很好用(内容长度很大 = 返回了很多好的内容)。但是,如果我尝试以编程方式获取 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+"<"

我已经为此工作了很多年,但我无法解决。它让我很头疼。有人能告诉我这里有什么问题吗?许多thanx提前。

4

1 回答 1

0

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

于 2012-06-13T00:49:38.500 回答