使用python来登录asp网站和登录其他网站差不多,只是因为asp页面在每次请求的时候都要带上viewstate,因此使用python来登录的话就多了一个步骤,获得这个页面的viewstate之后带上这个和你要post或get到该页面的请求数据就好了,下面这段程序是登录一个asp系统,然后搜索某些数据并将这些数据保存下来.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#coding=utf-8 import urllib2 from bs4 import BeautifulSoup import urllib import cookielib import re import httplib import time loginUrl = "登录地址" headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" } studentCookie = cookielib.CookieJar() pageOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(studentCookie)) loginPageRequest = urllib2.Request(loginUrl) loginPageHTML = pageOpener. open (loginPageRequest).read() """ s=requests.Session() s.headers.update(headers) r=s.get(loginUrl) """ print loginPageHTML soup = BeautifulSoup(loginPageHTML) __VIEWSTATE = soup.find( id = "__VIEWSTATE" )[ 'value' ] __EVENTVALIDATION = soup.find( id = "__EVENTVALIDATION" )[ 'value' ] print __VIEWSTATE print __EVENTVALIDATION login_data = { ' __EVENTTARGET' :' ', ' __EVENTARGUMENT ':' ', ' __LASTFOCUS ':' ', ' __VIEWSTATE ':__VIEWSTATE, ' __EVENTVALIDATION ':__EVENTVALIDATION, ' ClienScreentHeight ':' 768 ', ' TextBoxUserID ':' username ', ' TextBoxPWD ':' password ', ' drpLanguage ':' zh - CN ', ' ButtonConfirm.x ':' 45 ', ' ButtonConfirm.y ':' 64 ' } loginHeader = { 'User-Agent' : 'sssssssssssssssssssssss' } loginData = urllib.urlencode(login_data) loginRequest = urllib2.Request(loginUrl , loginData , headers) loginResponse = pageOpener. open (loginRequest) print loginResponse theurl = '登录后搜索页面地址' mainPageRequest = urllib2.Request(theurl) mainPageHTML = pageOpener. open (mainPageRequest).read() soup = BeautifulSoup(mainPageHTML) __VIEWSTATE = soup.find( id = "__VIEWSTATE" )[ 'value' ] #__EVENTVALIDATION=soup.find(id="__EVENTVALIDATION")['value'] print __VIEWSTATE #print __EVENTVALIDATION searchdata = { '__VIEWSTATE' :__VIEWSTATE, '__EVENTVALIDATION' :'', 'txtCopNO' :' ', ' txtCAR_NO_S ':' ', ' drpStatus ':' ', ' txtHiddenOrOnline ':' none ', ' txtAuto_id ':' ', ' drpType ':' ', ' drpBaseType ':' ', ' ddlIsStatus ':0, ' txtICCard ':' ', ' txtBILL_NO ':' ', ' txtGDateTime1 ':' ', ' txtGDateTime2 ':' ', ' drpFromKA ':' ', ' drpToKA ':' ', ' btnSearch ':' % E6 % 9F % A5 + % E8 % AF % A2 % 28F % 29 ' } data2 = urllib.urlencode(searchdata) searchData = urllib.urlencode(searchdata) searcgRequest = urllib2.Request(theurl , searchData , headers) searchResponse = pageOpener. open (searcgRequest) print loginResponse print searchResponse searchHtml = searchResponse.read() filename = r 'C:\Users\Dell\Desktop\getlogin\file' + time.strftime( '%d%H%M' ,time.localtime(time.time())) + '.html' file = open (filename, 'w' ) file .write(searchHtml) file .close() print 'end' #raw_input() |
原文:python登陆asp网站页面