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 の値をコピーして貼り付けると、これは正常に機能します (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+"<"

私は何年もの間これに取り組んできましたが、うまくいきません。それは私の頭をやっています.誰かがここで何が悪いのか私に手がかりを与えることができますか? 事前に感謝します。

4

1 に答える 1

0

最初の応答には、毎回異なる別のCookie値があり、状態/一貫性を維持するために、今後の要求ごとにキャッチして返送する必要があります。

于 2012-06-13T00:49:38.500 に答える