Python使用URL中的会话刮取asp.net

时间:2012-11-21 09:01:39

标签: asp.net python session

我试图用asp.net编写的一个小页面(使用POST方法)。但是有一个问题,我无法访问URL中的服务器指定的会话ID" ... /(S(XXXXXXXXX))/..."。

这是我的代码:

import urllib
import urllib2

headers = {
    'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.13) Gecko/2009073022 Firefox/3.0.13',
    'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml; q=0.9,*/*; q=0.8',
    'Content-Type': 'application/x-www-form-urlencoded'
}

url = 'http://mobile.trenitalia.com/W2/ViaggiaTrenoXHTML.aspx'
values = {'Text1':21324,
            '__EVENTVALIDATION':'/wEWAwLgwZLkDQLzlKGwCgK28MDdBaZpixsZK6pgmdSd5WzAhOKq22MJ',
            '__VIEWSTATE':'/wEPDwUINzkxNzIxNzFkZCx1ajW4bJv22/lexpR1EWM3e10A',
            'butt_Find':'Cerca'}

data = urllib.urlencode(values)
req = urllib2.Request(url)#, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

你如何看到网址是: http://mobile.trenitalia.com/W2/ViaggiaTrenoXHTML.aspx

并且没有会话的痕迹,我如何访问服务器给出的会话?

1 个答案:

答案 0 :(得分:0)

response变量上,您可以调用geturl()方法获取生成的网址:

In [13]: response.geturl()
Out[13]: 'http://mobile.trenitalia.com/(S(saaizweqpa3q5yvnd4qjytii))/W2/ViaggiaTrenoXHTML.aspx'