最近持续学习python中,真是学到深处越来越爱上这门语言了,她“优雅”、“明确”、“简单”的特性深深的吸引了我。
真是太能扯了,屌丝果然只能爱上语言了.
我在这介绍一部简单易懂的Python教程——Python2,Python3
起因
之前用Python爬取了Toj的题目主干——简单Python爬虫练习,并以此作为Python爬虫的入门实验,待我Python能力有所长进后,就想到或许可以使用Python把自己之前提交的AC代码全部爬下来,这也许会很有趣。
没错,博主就是天津大学的在校本科生~
准备
首先我们需要分析一下要爬取的网站架构,这是TOJ主页
查找AC提交
Toj是靠Run ID来区分所有的提交的,所以我们想要找到自己的AC代码,只需要把自己的AC提交ID记录下来即可
在http://acm.tju.edu.cn/toj/status.php?accept=1&user=xxx 上记录了username为xxx的提交人的AC提交,使用浏览器的审查功能可以看到截图:
看上图两个方框圈起来的地方是对应的,这里的Run ID就是我们要找的东西
爬取准备
找完所有的AC提交ID,我们就可以开始爬取对应代码了
点击上图中code尺寸的链接就会进入一个密码验证界面——http://acm.tju.edu.cn/toj/show_open.php?sid=1591405
这里的sid就是你打开的代码对应的Run ID
输入密码验证成功后就会进入有AC代码的页面,在审查中打开Network属性可以看到下面的结果:
这里最重要的信息是:
- Request URL:
- user_id:
- sid:1591405
- passwd:
请求的URL为http://acm.tju.edu.cn/toj/show_code.php,表单提交的数据有user_id,sid,passwd
知道这些我们就可以完成上面的密码验证过程了
最后查看该页面的html代码就可以爬下你的AC代码了
码代码
使用模块
首先看看我用到的所有模块吧
获取AC提交ID
按照上面的准备过程,首先我们要找到自己的AC提交ID:
这里用到bs4下的BeautifulSoup工具完成了对HTML文档的解析,从中我们找到了所有的AC提交ID
获取AC代码
|
|
说明一下,这里模拟了登录验证密码的过程,也就是之前提到的表单提交
与此同时,我们还把AC代码提取出来并保存在本地了,看看下面的截图你就能明白是如何提取的了
输入账号密码和代码保存目录
|
|
这里的过程基本上大家都明白了吧,我只是使用了Python自带的raise语句抛出一个错误,达到验证账号密码是否正确的目的
完整程序
|
|
GitHub
Follow 我的Python学习项目吧,大家一起进步