Skip to content

Commit e02c1eb

Browse files
committed
20170817
1 parent a5a5d7f commit e02c1eb

File tree

6 files changed

+37
-41
lines changed

6 files changed

+37
-41
lines changed

jyu/db.sqlite3

3 KB
Binary file not shown.

jyu/student/scrapy.py

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@
55

66

77
LOGIN_URL = "http://210.38.162.116/default2.aspx"
8+
HEADER = {
9+
'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 59.0.3071.115Safari537.36',
10+
'Content-Type': 'application/x-www-form-urlencoded',
11+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
12+
'Accept-Language': 'zh-CN,zh;q=0.8'
13+
}
14+
15+
816

917

1018
def login(username,password):
@@ -13,7 +21,6 @@ def login(username,password):
1321
content = request.text
1422
url = request.url
1523

16-
1724
tree = html.fromstring(content)
1825
viewstate = tree.xpath("//input[@name='__VIEWSTATE']/@value")
1926
print(viewstate)
@@ -33,48 +40,35 @@ def login(username,password):
3340
}
3441

3542
# Create header
36-
headers = {
37-
'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 59.0.3071.115Safari537.36',
38-
'Content-Type': 'application/x-www-form-urlencoded',
39-
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
40-
'Accept-Language': 'zh-CN,zh;q=0.8',
41-
'Referer': url
42-
}
43-
43+
HEADER['Referer'] = url;
4444

4545
# Perform login
46-
result = requests.post(url, data = payload, headers = headers)
46+
result = requests.post(url, data = payload, headers = HEADER)
4747
tree = html.fromstring(result.text)
48-
print(result.text)
4948

5049
xm = list(set(tree.xpath("//span[@id='xhxm']/text()")))[0]
5150
xm = xm.replace(" ","")
5251
xm = xm[9:-2]
53-
return {'username':username,'xm':xm,'url':url}
52+
53+
return result.url
5454
except Exception, e:
5555
return None
5656

57-
def loadScorePage(username,xm,url):
57+
def loadScorePage(url):
5858
try:
5959
# Scrape url
60-
scoreurl = url.replace("default2","xscjcx") + "?xh=" + username + "&xm=" + xm + "&gnmkdm=N121605"
61-
headers = {
62-
'User-Agent': 'Mozilla / 5.0(Windows NT 6.1;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 59.0.3071.115Safari537.36',
63-
'Content-Type': 'application/x-www-form-urlencoded',
64-
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
65-
'Accept-Language': 'zh-CN,zh;q=0.8',
66-
'Referer': url
67-
}
60+
scoreurl = url.replace("xs_main","xscjcx") + "&gnmkdm=N121605"
61+
HEADER['Referer'] = url;
62+
63+
result = requests.get(scoreurl, headers = HEADER)
6864

69-
result = requests.get(scoreurl, headers = headers)
70-
# print(result.text)
7165
tree = html.fromstring(result.text)
7266
viewstate = tree.xpath("//input[@name='__VIEWSTATE']/@value")
73-
return {'viewstate':viewstate, 'scoreurl': scoreurl, 'headers': headers}
67+
return {'viewstate':viewstate, 'url': scoreurl}
7468
except Exception, e:
7569
return None
7670

77-
def loadlncj(viewstate, scoreurl, headers):
71+
def loadlncj(viewstate, url):
7872
try:
7973
payload = {
8074
"__EVENTTARGET": "",
@@ -86,7 +80,8 @@ def loadlncj(viewstate, scoreurl, headers):
8680
"ddl_kcxz": "",
8781
"btn_zcj": "历年成绩",
8882
}
89-
result = requests.post(scoreurl, data = payload, headers = headers)
83+
HEADER['Referer'] = url;
84+
result = requests.post(url, data = payload,headers=HEADER)
9085
tree = html.fromstring(result.text)
9186
print(result.text)
9287
datatable = list(set(tree.xpath("//table[@id='Datagrid1']/tr")))

jyu/student/scrapy.pyc

-423 Bytes
Binary file not shown.

jyu/student/templates/student/score.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ <h1 class="title">我的生活</h1>
5050
<li class="item-content">
5151
<div class="item-media"><i class="icon icon-f7"></i></div>
5252
<div class="item-inner">
53-
<div class="item-title">商品名称</div>
54-
<div class="item-after">杜蕾斯</div>
53+
<div class="item-title">{{rtnMsg}}</div>
54+
<div class="item-after">{{}}</div>
5555
</div>
5656
</li>
5757
<li class="item-content">

jyu/student/views.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def loginPost(request):
2323
if result:
2424
request.session['user'] = username
2525
request.session['password'] = password
26-
request.session['scrapyMsg'] = result
26+
request.session['url'] = result
2727
return JsonResponse({'rtnMsg': '绑定成功!', 'rtnCode':'2000'})
2828
else:
2929
return JsonResponse({'rtnMsg': '账户名或密码错误,绑定失败!', 'rtnCode':'9000'})
@@ -32,23 +32,24 @@ def loginPost(request):
3232
def logout(request):
3333
if 'user' in request.session:
3434
del request.session['user']
35+
del request.session['url']
3536
return HttpResponseRedirect('/login')
3637

3738
#首页
3839
def home(request):
3940
return render(request,'student/index.html')
4041

4142
def score(request):
42-
return render(request, 'student/score.html')
4343
#爬取成绩页面的token
44-
# username = request.session['user']
45-
# scrapyMsg = request.session['scrapyMsg']
46-
# result = scrapy.loadScorePage(username, scrapyMsg['xm'], scrapyMsg['url'])
47-
# if not result:
48-
# return JsonResponse({'rtnMsg': '获取历年成绩失败!', 'rtnCode': '9000'})
49-
# else:
50-
# scoreList = scrapy.loadlncj(result['viewstate'], result['scoreurl'],result['header'])
51-
# if not result:
52-
# return JsonResponse({'rtnMsg': '获取历年成绩失败!', 'rtnCode': '9000'})
53-
# else:
54-
# return JsonResponse({'rtnMsg': '获取历年成绩成功!', 'rtnCode': '2000', 'data': scoreList})
44+
url = request.session['url']
45+
result = scrapy.loadScorePage(url)
46+
print "======"
47+
if not result:
48+
return render(request, 'student/score.html',{'rtnMsg': '获取历年成绩失败!', 'rtnCode': '9000'})
49+
else:
50+
scoreList = scrapy.loadlncj(result['viewstate'], result['url'])
51+
return render(request, 'student/score.html')
52+
if not result:
53+
return render(request, 'student/score.html', {'rtnMsg': '获取历年成绩失败!', 'rtnCode': '9000'})
54+
else:
55+
return render(request, 'student/score.html', {'rtnMsg': '获取历年成绩成功!', 'rtnCode': '2000'})

jyu/student/views.pyc

403 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)