python爬虫获取郑大教务在线成绩数据
python爬虫获取郑大教务在线成绩数据话不多说,先上代码。# -*- coding: cp936-*-#! /usr/bin/env python#---------------------------------------#程序:郑州大学教务在线数据获取#版本:0.5#作者:陆嵩&潘凎#日期:2016-2-20#语言:Pyt
·
python爬虫获取郑大教务在线成绩数据
话不多说,先上代码。
# -*- coding: cp936-*-
#! /usr/bin/env python
#---------------------------------------
# 程序:郑州大学教务在线数据获取
# 版本:0.5
# 作者:陆嵩&潘凎
# 日期:2016-2-20
# 语言:Python 2.7
# 操作:输入你的年级、学号和密码
# 功能:将你每一学期的成绩打包txt存储到本地。
#---------------------------------------
import urllib
import urllib2
import re
from bs4 import BeautifulSoup
#初始化------------------------------------
grade='2013'
sno='20132120215'
password='********'
#-----------------------------------------
#post数据&登录------------------------------
def post():
url = 'http://jw.zzu.edu.cn/scripts/qscore.dll/search'
values = {'nianji': grade,
'xuehao': sno,
'mima' : password}
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
response = urllib2.urlopen(req)
the_page = response.read()
response.close()
return the_page
#-----------------------------------------
#获取各学期网页源码---------------------------
def pages_get(the_page):
urltail_format=re.compile('(?<=userid\=)[A-Z\d]+(?="\>)')
urltails=urltail_format.findall(the_page)
pages=[]
for i in range(0,len(urltails)-1):
term_url='http://jw.zzu.edu.cn/scripts/qscore.dll/search?userid='+urltails[i]
term_page = urllib.urlopen(term_url)
pages.append(term_page.read())
term_page.close()
pages.append(the_page)
return pages
#-----------------------------------------
#从网页中抓取所需数据-------------------------
def data_collection(page):
soup = BeautifulSoup(page,from_encoding="cp936")
scores=str(soup.table)
r_subject = re.compile('(?<="40%"\>).*?(?=\<\/td\>)')
r_type = re.compile('(?<="17%"\>).*?(?=\<\/td\>)')
r_others = re.compile('(?<="15%"\>).*?(?=\<\/td\>)')
subjects = r_subject.findall(scores)
types = r_type.findall(scores)
others = r_others.findall(scores)
length = len(subjects)
csv = []
for i in range(0,length):
info = subjects[i] +','+ types[i] +','+ others[3*i] +','+ others[1+3*i] +','+ others[2+3*i] +'\n'
csv.append(info)
return csv
#-----------------------------------------
#数据的保存---------------------------------
def data_save(data,file_name):
file_object = open('D:\\'+file_name, 'w+')
file_object.writelines(data)
file_object.close()
#-----------------------------------------
##---------------主程序—--------------------
if __name__ == '__main__':
print u"""#---------------------------------------
# 程序:郑州大学教务在线成绩数据获取
# 版本:0.5
# 作者:陆嵩
# 日期:2016-2-20
# 语言:Python 2.7
# 操作:输入你的年级、学号和密码
# 功能:将你每一学期的成绩打包txt存储到本地。
#---------------------------------------
"""
the_page=post()
pages=pages_get(the_page)
for i in range(0,len(pages)):
print u'获取第'+str(i+1)+u'学期数据中...'
data=data_collection(pages[i])
file_name='第'+str(i+1)+'学期.txt'
data_save(data,file_name)
print u'完成!数据保存D盘,请注意查看。'
#-------------------------------------------
更多推荐
已为社区贡献6条内容
所有评论(0)