python练手之爬虫篇(一)
2015-10-30 11:08
453 查看
因为这段时间比较闲,所以有很多时间在校园网内看视频(很颓废,有木有o(╯□╰)o)
记得暑假时学校官网下部出现一个新链接,“网络资源服务”,进去如下图所示:
发现除了电影、电视剧和视频资源外,其他的都可以下载。
其实这个网站就和之前的ftp差不多,一开始还挺喜欢这个在线播放的,毕竟不用如之前ftp一样需要先花费些时间下载下来观看,可以直接在线播放,因为校园网是光缆铺设的所以在线播放毫无压力。但是有时候想下载下来放到移动设备上看,可是没有下载功能,于是正好这段时间自学了python,可以以此实践练练手!
通过火狐浏览器上的插件httpfox或者直接调出开发者模式查看网络情况,观察浏览器与服务器之间的交互情况。暂时就不截图了O(∩_∩)O~
发现当点击在线播放时,服务器直返回数据类型是text/html,所以实现下载非常简单,直接保存即可。。
其他的就比较基础了,直接模拟浏览器发出请求,注意需要cookie等。
直接上代码了,以后有时间再写仔细一点。
自己用的,所以就没设计ui了。下面是运行截图:
实现的非常简单,只爬了每种资源的第一页,没有gui设计,没有异常捕捉、处理。
记得暑假时学校官网下部出现一个新链接,“网络资源服务”,进去如下图所示:
发现除了电影、电视剧和视频资源外,其他的都可以下载。
其实这个网站就和之前的ftp差不多,一开始还挺喜欢这个在线播放的,毕竟不用如之前ftp一样需要先花费些时间下载下来观看,可以直接在线播放,因为校园网是光缆铺设的所以在线播放毫无压力。但是有时候想下载下来放到移动设备上看,可是没有下载功能,于是正好这段时间自学了python,可以以此实践练练手!
通过火狐浏览器上的插件httpfox或者直接调出开发者模式查看网络情况,观察浏览器与服务器之间的交互情况。暂时就不截图了O(∩_∩)O~
发现当点击在线播放时,服务器直返回数据类型是text/html,所以实现下载非常简单,直接保存即可。。
其他的就比较基础了,直接模拟浏览器发出请求,注意需要cookie等。
直接上代码了,以后有时间再写仔细一点。
# coding=gbk import urllib,urllib2 import cookielib import re def Down(url,typeid): try: cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0', 'Referer':'http://www2.ahnu.edu.cn/ftp/eftphelp.htm' } req = urllib2.Request(url,headers=headers) opener.open(req) url = 'http://210.45.192.104/userOperator.do?flag=queryClassify&typeid='+typeid headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0', 'Referer':'http://210.45.192.104' } req = urllib2.Request(url,headers=headers) rlt = (opener.open(req)).read() rule = 'title="(.*?)"' lst = re.findall(rule,rlt) for i in xrange(len(lst)): print i,lst[i].decode('utf-8') fileid = raw_input('请输入所要下载资源的序号:\n') rule = 'href="/down(.*?)"' urlst = re.findall(rule,rlt) rule = 'id=(.*)' s = urlst[int(fileid)] loadid = re.findall(rule,s) urlnew = 'http://210.45.192.104/downOrLookFile.do?flag=downloadfile&fileid='+loadid[0] #print urlnew headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0', 'Referer':'http://210.45.192.104/userOperator.do?flag=queryClassify&typeid='+typeid } req = urllib2.Request(urlnew,headers=headers) rlt = opener.open(req) print urlst[int(fileid)] #print rlt.read() print '开始下载,请耐心等待......' filename = 'F:\\校园网络资源下载\\' name = lst[int(fileid)].decode('utf-8').encode('gbk') f = open(filename+name,'wb') f.write(rlt.read()) except Exception,e: print str(e) if __name__ == '__main__': while 1: #Down('http://210.45.192.104') hintstr = '''------------------------- 类型id: 1:电影 2:视频资源 3:音乐 4:文档 5:电视剧 -------------------------''' print hintstr typeid = raw_input('请输入所要下载资源的类型id:\n') if typeid == '5': typeid = '6' Down('http://210.45.192.104',typeid) print '下载完毕!' flag = raw_input('是否继续下载?y/n\n') if flag!='y': break
自己用的,所以就没设计ui了。下面是运行截图:
实现的非常简单,只爬了每种资源的第一页,没有gui设计,没有异常捕捉、处理。
相关文章推荐
- Python实现的图片批量下载(v3.5最新)
- 简单的界面
- python好东西——使用inspect.stack() 获取调用栈
- python第二章更多控制流程语句
- 一步一步学习Python(使用bat快捷启动)
- python第一章1.2 初步走进编程之门
- 如何在Django1.8 结合Python3.4版本中使用MySql
- python基础知识体系
- python第一章1.1.3 列表
- 开始Python 1.大纲整理
- Python使用socket传输文件
- python操作mysql数据库
- python vimrc设置
- (转)python之并行任务的技巧
- Python 标准库 urllib2 的使用细节
- python中的StringIO模块
- python学习-----添加IPS到数据文件
- 通过python的ConfigParse模块读写ini配置文件
- 转 -- 使用python的paramiko模块实现ssh与scp功能
- python通过文件头判断文件类型