0

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

这是我的代码:

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

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

4

1 回答 1

0

在您的response变量上,您可以调用该geturl()方法来获取结果 URL:

In [13]: response.geturl()
Out[13]: 'http://mobile.trenitalia.com/(S(saaizweqpa3q5yvnd4qjytii))/W2/ViaggiaTrenoXHTML.aspx'
于 2012-11-21T09:05:15.580 回答