def savecourse(context,cuser): courseid = course.objects.filter(name__contains=context['name'],termnumber=getTermNumber(),teachername__contains=context['teachername'])[0].courseid error = u'' keyid = courseid + context.get('timeKey','') + context['teachername'] place_context = match_location_context(context['timeandplace']) try: ccourse = course.objects.get(keyid = keyid,termnumber=term) except: context.pop('timeandplace') context.pop('timeKey') for x in xrange(7): context['day'+str(x+1)] = course.daydataFromDayString(context['day'+str(x+1)]) ccourse = course(keyid=keyid,termnumber=getTermNumber(),course_category=0,**context) ccourse.save() if place_context: ccourse.rawplace = place_context['name'] ccourse.save() # try: # ccourse = course.objects.get(courseid=context['courseid'],termnumber=term,teachername__contains=context['teachername']) # except: # pass ccourse.user.add(cuser) ccourse.save() if place_context: ccourse.rawplace = place_context['name'] ccourse.save() return error
def parse_course_page(string,user): keywords = {} keywords['class'] = 'pkuportal-table-portlet' strainer = SoupStrainer('table',**keywords) soup_course = BeautifulSoup(string,parseOnlyThese=strainer) if soup_course.table is None: return '0' tbody = soup_course.table for i,tr in enumerate(tbody): context = {} if i < 4: continue else: if type(tr) == Tag: context = { 'courseid':tr.contents[1].getText(), 'name':tr.contents[3].getText(), 'classnum':tr.contents[5].getText(), 'Coursetype':tr.contents[7].getText(), 'time':tr.contents[13].getText(), 'rawplace':tr.contents[15].getText() } context['keyid'] = context['courseid'] + context['classnum'] + context['rawplace'] + context['time'] time_context = match_time(context['time']) if time_context: context.update(time_context) ckeyid = context['keyid'] context['termnumber'] = getTermNumber() queryset = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 1) if queryset.count() == 0: thecourse = course(course_category = 1,**context) thecourse.save() thecourse.user.add(user) thecourse.save() else: thecourse = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 1) thecourse.update(**context) thecourse[0].user.add(user) thecourse[0].save() thecourse = thecourse[0] contextplace = place.dictFromPlaceString(context['rawplace']) if contextplace != None: placekey=str(contextplace['location'])+contextplace['interid'] if place.objects.filter(keyid=placekey).count()>0: thepalce=place.objects.get(keyid=placekey) thecourse.place=thepalce thecourse.save() return '0'
def json_mycourse(request): user = request.user courselist = user.course_set.filter(termnumber=getTermNumber()).values( 'cname', 'ename', 'classnum', 'courseid', 'id', 'name', 'credit', 'day1', 'day2', 'day3', 'day4', 'day5', 'day6', 'day7', 'place', 'rawplace', 'time', 'time_test', 'teachername') return HttpResponse(simplejson.dumps(list(courselist)), mimetype='application/json')
def handle_course(string,user): strainer = SoupStrainer('table',border='1') soup_course = BeautifulSoup(string,parseOnlyThese=strainer) tbody = soup_course.table if tbody is None: return '0' for i,tr in enumerate(tbody): if i>0: lists = list() for td in tr: if type(td) == Tag: x = td.contents[0].__str__().decode('utf8').strip(' ') lists.append(x) context = dict_course(lists) ckeyid = context['keyid'] queryset = course.objects.filter(keyid=ckeyid,termnumber=getTermNumber(),course_category = 0) if queryset.count() == 0: thecourse = course(termnumber=getTermNumber(),keyid=context['keyid'],courseid=context['courseid'],classnum=context['classnum'],name=context['name'],rawplace=context['rawplace'],time_test=context['time_test'],credit=context['credit'],time=context['time'],day1=context['day1'],day2=context['day2'],day3=context['day3'],day4=context['day4'],day5=context['day5'],day6=context['day6'],day7=context['day7'],teachername=context['teachername'],course_category = 0) thecourse.save() thecourse.user.add(user) thecourse.save() else: thecourse = course.objects.get(keyid=ckeyid,termnumber=getTermNumber(),course_category = 0) thecourse.classnum = context['classnum'] thecourse.rawplace = context['rawplace'] thecourse.time_test = context['time_test'] thecourse.user.add(user) thecourse.save() contextplace = place.dictFromPlaceString(context['rawplace']) if contextplace != None: placekey=str(contextplace['location'])+contextplace['interid'] if place.objects.filter(keyid=placekey).count()>0: thepalce=place.objects.get(keyid=placekey) thecourse.place=thepalce thecourse.save() return '0'
def savecourse(context, cuser): courseid = course.objects.filter( name__contains=context['name'], termnumber=getTermNumber(), teachername__contains=context['teachername'])[0].courseid error = u'' keyid = courseid + context.get('timeKey', '') + context['teachername'] place_context = match_location_context(context['timeandplace']) try: ccourse = course.objects.get(keyid=keyid, termnumber=term) except: context.pop('timeandplace') context.pop('timeKey') for x in xrange(7): context['day' + str(x + 1)] = course.daydataFromDayString( context['day' + str(x + 1)]) ccourse = course(keyid=keyid, termnumber=getTermNumber(), course_category=0, **context) ccourse.save() if place_context: ccourse.rawplace = place_context['name'] ccourse.save() # try: # ccourse = course.objects.get(courseid=context['courseid'],termnumber=term,teachername__contains=context['teachername']) # except: # pass ccourse.user.add(cuser) ccourse.save() if place_context: ccourse.rawplace = place_context['name'] ccourse.save() return error
#! python # -*- coding:UTF-8 -*- import urllib import urllib2 import cookielib import re from BeautifulSoup import BeautifulSoup,SoupStrainer,Tag from Server.models import course,place from Server.utility.TimeUtil import getTermNumber term = getTermNumber() user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' urlCourseDo = "http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/getCurriculmByForm.do" urlTongXuanKe2 = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B50' urlTongXuanKe3 = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B100' urlCoursePagei = 'http://elective.pku.edu.cn/elective2008/edu/pku/stu/elective/controller/courseQuery/queryCurriculum.jsp?netui_row=syllabusListGrid%3B' list_day = [u'一',u'二',u'三',u'四',u'五',u'六',u'日'] re_time=re.compile(u'([每|单|双]周)周(.?)([0-9]+)~([0-9]+)') re_TotalPage = re.compile(u'of ([0-9]+)') course_type_list = ['education_plan_bk','speciality','politics','english','gym','trans_choice','pub_choice','liberal_computer','pt'] re_TotalPage = re.compile(u'of ([0-9]+)') def run_elective_course_update(cookie_value): "登陆后将cookie_value传入" return_m = '' data = {}
def handle_course(string, user): strainer = SoupStrainer('table', border='1') soup_course = BeautifulSoup(string, parseOnlyThese=strainer) tbody = soup_course.table if tbody is None: return '0' for i, tr in enumerate(tbody): if i > 0: lists = list() for td in tr: if type(td) == Tag: x = td.contents[0].__str__().decode('utf8').strip(' ') lists.append(x) context = dict_course(lists) ckeyid = context['keyid'] queryset = course.objects.filter(keyid=ckeyid, termnumber=getTermNumber(), course_category=0) if queryset.count() == 0: thecourse = course(termnumber=getTermNumber(), keyid=context['keyid'], courseid=context['courseid'], classnum=context['classnum'], name=context['name'], rawplace=context['rawplace'], time_test=context['time_test'], credit=context['credit'], time=context['time'], day1=context['day1'], day2=context['day2'], day3=context['day3'], day4=context['day4'], day5=context['day5'], day6=context['day6'], day7=context['day7'], teachername=context['teachername'], course_category=0) thecourse.save() thecourse.user.add(user) thecourse.save() else: thecourse = course.objects.get(keyid=ckeyid, termnumber=getTermNumber(), course_category=0) thecourse.classnum = context['classnum'] thecourse.rawplace = context['rawplace'] thecourse.time_test = context['time_test'] thecourse.user.add(user) thecourse.save() contextplace = place.dictFromPlaceString(context['rawplace']) if contextplace != None: placekey = str( contextplace['location']) + contextplace['interid'] if place.objects.filter(keyid=placekey).count() > 0: thepalce = place.objects.get(keyid=placekey) thecourse.place = thepalce thecourse.save() return '0'
def json_mycourse(request): user=request.user courselist=user.course_set.filter(termnumber=getTermNumber()).values('cname','ename','classnum','courseid','id','name','credit','day1','day2','day3','day4','day5','day6','day7','place','rawplace','time','time_test','teachername') return HttpResponse(simplejson.dumps(list(courselist)), mimetype='application/json')
import urllib import urllib2 import cookielib import re from BeautifulSoup import BeautifulSoup,SoupStrainer,Tag from Server.models import course,place from Server.utility.TimeUtil import getTermNumber term = getTermNumber() def match_time(string): def set_daytime(m,context): for i,dayx in enumerate(list_day): if m.group(2) == dayx: if m.group(1) != u'每周': context['day'+str(i+1)] = m.group(3)+'-'+m.group(4) + m.group(1) else: context['day'+str(i+1)] = m.group(3)+'-'+m.group(4) context = {} for i in xrange(7): context['day'+str(i+1)]=0 m1 = re_time.search(string) if m1: m2 = re_time.search(string[m1.end():]) set_daytime(m1,context) if m2: #print m2.group(i) set_daytime(m2,context)