题库统计的小玩意_python

BG


最近搞的一个扒学校题库的评测记录然后扔进数据库的小玩意,打算用matplotlib画个图统计一下玩一玩

Code


半成品

import urllib2 as ub
import pymongo
import re

def getPage(url):
    headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 5.5; Windows NT)'}
    request = ub.Request(url, headers = headers)
    html = ub.urlopen(request)
    page = html.read()
    return page

def getStatusList(page):
    pageReg = re.compile(r'<tr align=center><td>(.+?)</td><td><a href=.+?>(.+?)</a></td><td><a href=.+?>(.+?)</a></td><td><font color=.+?>(.+?)</font></td><td>(.+?)</td><td>(.+?)</td><td>(.+?)</td><td>(.+?)</td><td>(.+?)</td></tr>')
    tmpList = re.findall(pageReg, page)
    return tmpList

def getNextUrl(page):
    if (re.search(r'Next Page', page) == None):
        return None
    urlReg = re.compile(r'\[<a href=status\?top=(.+?)><font color=blue>Next Page</font></a>\]')
    url = re.findall(urlReg, page)
    return 'http://10.156.17.250/JudgeOnline/status?top=' + url[0]

def getStatusType(problemId, user, problem, result, memory, time, language, length, time):
    tmpStatusType = {'id': problemId, 'user': user, 'problem': problem, 'result': result, 'memory': memory, 'time': time, 'language': language, 'length': length, 'time': time}
    return tmpStatusType

def getRec():
    client = pymongo.MongoClient("localhost", 27017)
    st = client['statusDb']
    rec = st['statusRec']
    return rec

url = 'http://10.156.17.250/JudgeOnline/status'
# file = open('Status (Online).txt', 'w')
rec = getRec()
while url != None:
    page = getPage(url)
    nexUrl = getNextUrl(page)
    if (nexUrl == url):
        break
    else:
        url = nexUrl
    statusList = getStatusList(page)
    for item in statusList:
        status = getStatusType(item[0], item[1], item[2], item[3], item[4], item[5], item[6], item[7], item[8])
        rec.insert(status)
        # for i in item:
            # file.write(i + '\n')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值