_ ___ __ __ __ __ ______ __
| | / (_)____/ /___ ______ _/ / / /_ ______/ /___ ____ / __ \ \/ /
| | / / / ___/ __/ / / / __ `/ /_ / / / / / __ / __ `/ _ \/ /_/ /\ /
| |/ / / / / /_/ /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / __/ ____/ / /
|___/_/_/ \__/\__,_/\__,_/_/\____/\__,_/\__,_/\__, /\___/_/ /_/
/____/ v0.1.6
tornado>=4.3
pymysql>=0.7.1
beautifulsoup4>=4.4
sqlalchemy>=1.0.1
在Crawler下各个OJ的Config文件下,账号格式为login时post的数据的格式
数据库表见 sql_version_1_2.sql
可在tools.dbcore里配置数据库连接
在Config包对应文件下配置,
FilePathConfig 可以设置VirtualJudgePY会在运行时生成的一些临时的pkl文件存放位置 ParametersConfig 可以配置一些临时线程池的大小
目前可以支持的OJ有 : PKU,HDU,ZOJ,BZOJ
在各个OJ的Cawler中可以指定抓取的题目范围,并储存为pkl文件,用tools里的ImportProblem来将pkl文件导入数据库
VirtualJudgePY还可以在线从BnuVJ上抓取题目并导入.
python3 __init__.py
virtualjudgePY中新增加OJ支持非常的容易
每个OJ抓取包括一下几个部分:
-
Config设置账号和登陆post数据格式,
-
Crawler抓取题目,下载一个题目的网页,并从中取得 数据库表problem和problemdetail表中的部分或全部的列,然后存为PKL文件.
-
Scanner扫描OJ的status列表并返回list格式的结果
-
Vjudge,登陆oj后用post提交题目
具体内容可以参考BzojCrawler
详见: http://www.ckboss.cf/2016/05/30/Tornado%E7%9A%84%E9%83%A8%E7%BD%B2/
以xxxx端口启动Web端:
python3 TornadoWebInit.py -port=xxxx