爬虫登陆极客学院,并下载视频
2015-08-07 22:03
295 查看
首先说明:这个代码不是免费下载视频,需要你有vip账号
只是方便大家批量下载
不过体验vip也很好获得,有了体验机会赶紧用这个批量下载吧
完整代码在这:我的github
只需要修改最下面的存储地址和需要下载的页面,就可以将一个页面中的课程的所有视频批量下载到指定文件夹
主要是登陆网站这一块废了些时间,简要说一下登陆模块:
首先必须有下面这一部分代码,意思是给urlopen()函数加上cookie处理,否则是不会处理cookie的,但是网站记录我们是谁就是靠cookie的,没有这个那么就无法登陆,所以这一部分极其重要
下面就是处理登陆要发送的数据包了,准备好data就可以,然后还有一个要点,就是验证码这一块,我是直接把验证码获取下来,然后显示,最后手动输入验证码的
只是方便大家批量下载
不过体验vip也很好获得,有了体验机会赶紧用这个批量下载吧
完整代码在这:我的github
只需要修改最下面的存储地址和需要下载的页面,就可以将一个页面中的课程的所有视频批量下载到指定文件夹
主要是登陆网站这一块废了些时间,简要说一下登陆模块:
首先必须有下面这一部分代码,意思是给urlopen()函数加上cookie处理,否则是不会处理cookie的,但是网站记录我们是谁就是靠cookie的,没有这个那么就无法登陆,所以这一部分极其重要
[code]# 初始化一个CookieJar来处理Cookie cookieJar = cookielib.CookieJar() # 实例化一个全局opener opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) # 把这个cookie处理机制装上去,大概是这个意思-.- urllib2.install_opener(opener)
下面就是处理登陆要发送的数据包了,准备好data就可以,然后还有一个要点,就是验证码这一块,我是直接把验证码获取下来,然后显示,最后手动输入验证码的
[code]# 从登录页面获取登陆参数 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 '登陆完成'
相关文章推荐
- Swift学习笔记(二十一)——字典
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
- 倒油问题之深搜和广搜算法
- 地图与定位
- 欢迎使用CSDN-markdown编辑器
- js如何截取以逗号隔开的字符串
- 图论-最短路问题
- win7 删除Windows服务的方法!
- HDU2.1.4 Cake
- hive 实战笔记case3
- 数论 - 线性筛法与积性函数
- hdu 3199 Hamming Problem
- 网易云课堂 浙江大学-陈越、何钦铭-数据结构基础习题集(自测)
- 编程语言
- 网易云课堂 浙江大学-陈越、何钦铭-数据结构基础习题集(自测)
- 充满正能量的关于珍惜时间的名言
- 将数字字符串转换为整型
- C#编程:NetworkStream类的Read
- uva12532 线段树单点更新
- HDU 3081 Marriage Match II(最大流 + 并查集)