前言
在爬取Vjudge的导出代码的时候,之前我们采用的是纯正则一个个抓取,速度很慢,当时Vjudge官方向我们提供了一种解决方法就是从URL中获得比赛源代码。
获得验证
众所周知,Vjudge获取比赛源代码需要登陆拉题人的账号密码,所以我使用了Request
这个库来处理含有cookie的请求。所以首先需要模拟登陆这个过程:
|
|
获得流
下一步是爬虫中常见的,使用opener.open
来访问这个URL并且获得结果,需要注意的是,这个过程需要带一个合适的header
。
接着我从浏览器中发现其Content-Type
为application/octet-stream
,而request
返回的数据中fp
正是CStringIO
类型,所以我们需要通过这个数据结构来获得我们需要的文件。
|
|
这样就能够正确的把导出的zip文件存储到本地磁盘之中了。