首先说明:这个代码不是免费下载视频,需要你有vip账号
只是方便大家批量下载
不过体验vip也很好获得,有了体验机会赶紧用这个批量下载吧
完整代码在这:我的github
只需要修改最下面的存储地址和需要下载的页面,就可以将一个页面中的课程的所有视频批量下载到指定文件夹
主要是登陆网站这一块废了些时间,简要说一下登陆模块:
首先必须有下面这一部分代码,意思是给urlopen()函数加上cookie处理,否则是不会处理cookie的,但是网站记录我们是谁就是靠cookie的,没有这个那么就无法登陆,所以这一部分极其重要
# 初始化一个CookieJar来处理Cookie
cookieJar = cookielib.CookieJar()
# 实例化一个全局opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
# 把这个cookie处理机制装上去,大概是这个意思-.-
urllib2.install_opener(opener)
下面就是处理登陆要发送的数据包了,准备好data就可以,然后还有一个要点,就是验证码这一块,我是直接把验证码获取下来,然后显示,最后手动输入验证码的
# 从登录页面获取登陆参数
login_url = 'http://passport.jikexueyuan.com/sso/login'
# 登陆信息发送到这个地址
passport_url = 'http://passport.jikexueyuan.com/submit/login?is_ajax=1'
verifyCode_url = 'http://passport.jikexueyuan.com/sso/verify'
# 获取登陆页面源码
request = urllib2.urlopen(login_url)
html = request.read()
request.close()
# 获取登陆要post的数据
expire = re.search(r"(?s)value='(.*?)' name='expire",html)
# 验证码
verifyCodeGifPath = '/tmp/jikexueyuan.gif'
request = urllib2.urlopen(verifyCode_url)
gif = request.read()
request.close()
fGif = open(verifyCodeGifPath,'w')
fGif.write(gif)
fGif.close()
# 读取保存到本地的验证码图片
os.system('eog ' + verifyCodeGifPath)
verify = raw_input("请输入图中的验证码:")
data = {
'expire': expire.group(1),
'referer': 'http%3A%2F%2Fwww.jikexueyuan.com%2F',
'uname': 用户名,
'password': 密码,
'verify': verify,
}
post_data = urllib.urlencode(data)
request = urllib2.Request(passport_url,post_data)
# 给一个useragent,防止被认为是爬虫程序
request.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36')
# 发送登录请求
request = urllib2.urlopen(request)
request.close()
print '登陆完成'