版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、巧用批处理自动化下载海量网络资源第一部分 引言网络上有好多免费视频学习网站,比如“学吧学吧”和“enet网络学院”。相信热衷于各种电脑技术的人会经常去这种网站充电吧。那好,问题来了,如果你碰到一个很好的视频教程,虽然网站提供视频的下载,但只能一个一个的下载,而且找遍整个网络世界都没有全套视频的下载,怎么办?有的视频它的地址是有规律的(连续的),可以使用迅雷的“批量下载”,但是更多的视频地址是没规律的.所以要下载没规律的视频,我们就要一直重复着“打开网页”“下载视频”“关闭网页”的动作,显然这种机械式的操作没人喜欢。其实我们可以换个思路,在我们打开网页的时候,为什么能够观看视频呢?其实这就跟ht
2、ml语言有关了,在我们打开网络上的某个网页的时候,浏览器就会解释这个网页,把网页要表达的东西(比如图片,表格)展现给我们。如果想让网页播放视频,那就得在网页文件中把这个视频的地址加进去。所以一般来说视频的地址就在播放它的网页的源代码中。只要我们知道所有的视频的地址了,那接下来要下载是它们是不是很简单了?好了,思路渐渐清晰,问题是如何得到这些视频地址?既然每个视频的地址都“藏”在播放它的网页中,那我们就可以把所有包含视频地址的网页全部下下来。然后再利用强大的批处理来提取出我们需要的视频地址就可以了。做完这些我们就可以推广到更一般的情况了,而不仅仅局限于下载视频了. 第二部分运行环境以及使用工具操
3、作系统:WINDOWS系列,理论上来说,能正常使用迅雷以及批处理文件的系统都可以。下载工具:本文中使用的下载软件是迅雷,具体选择看个人喜好。这里有必要介绍一下批处理文件(以下2段资料来源于网络)。批处理文件也叫批处理程序,可以用记事本来编写,是有效的win32程序,直接双击运行。是不需要像高级语言程序那样经过编译才能使用的,这是它的便利之处。批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的后缀.最简
4、单的例子,是逐行书写在命令行中会用到的各种命令。更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等高级语言一样。 不要求大家看懂本文出现的两个批处理程序,大家就把它们作exe程序吧,就像迅雷,我们只需要知道它能做什么,而不用关心它是怎么做到的。还好,这两个程序都是菜鸟级的(因为我也是菜鸟),里面的命令都是批处理中使用频率很高的,并不生僻,理解起来也不难。第三部分 完整的步骤思路有了,接下来就要一步步的实现我们的目标了。我们的目的是应用,不要求大家掌握里面涉及的各种技术和理论(比如html语言,批处理语言)。知道它的原理就可以了。3.1 登陆“目录网页”
5、图3-1 图片是从当然这个网页上还有一些对我们无用的链接,为了与那些无用的链接区别开,我们把这些打开后能播放视频的链接称作“有用链接”,点击“有用链接”打开的网页就叫“有用网页”。注意:这里的“目录网页”、“有用链接”和“有用网页”是我自己起的几个形象的称呼,方便表述而已。这几个称呼后文还会出现的,希望大家能够了解。为了方便讲解,本文使用了大量图片。我们把这个“有用网页作为例子。后面的一系列操作就是为了把“零起点学通C+”这一套视频(一共三百多个)下载下来。 3.2 批量下载网页让我们回到图片3-1所示的网页(也就是“目录网页“)中,这个网页中有着我们需要的所有的“有用链接”,接下来就要用迅雷
6、的“下载全部链接”这个功能了。在“目录网页”的随便一个空白处点击鼠标右键,就会弹出一个菜单,这个菜单里就有“使用迅雷下载全部链接”这个选项(见图3-2)。 图3-2然后鼠标左键点击这个选项,就会出现一个对话框,如图3-3所示。后面的网址就代表这些链接所指向的“有用网页”,这样我们就把这些“有用网页”都下载下来了。可以看到所有的“有用链接”都是php格式的.于是我们点右下方的“筛选”,只下载所有php格式的. 图3-3 筛选完后我们就可以点“确定”按钮了,我们把这些网页放在一个空目录里面,假设是D盘的Temp目录吧。实际上下载这300多个php网页不要什么时间,因为每个文件30多K,300个总共
7、才10M左右。也许有人会问:如果下载了一些没用的php网页怎么办?上述方法的确会下载到不需要的php网页,但是仅仅是几个。因此,没必要那么细致。追求完美的读者可以参考附录一,里面介绍了一种方法,可以既不用“筛选”出php格式,而且能保证下载到的所有的php文件都是“有用网页”。3.3 核心分析网页 编写程序 网页下载完后,我们发现这些“有用网页”的大小竟然惊人的相似,都是33K,如图3-4。 图3-4难道这仅仅是巧合?网页设计的知识告诉我们:这些网页除了源代码里面包含的视频地址不一样外,其他地方是几乎一模一样的(包括这些地址在网页源代码中的位置)。 由于每个下载的“有用网页”中都含有1个视频地
8、址,我们就要用到批处理中的for /f 命令,这是个对文本的操作都要用到的命令,非常强大。我还是把代码贴出来(如图3-5),然后讲思路吧。 图3-5注意:这个程序要放到“有用网页”所在的文件夹才有用,也就是我们前文提到的D:Temp文件夹,以下分析看不懂不要紧,可以直接看下一节。这段批处理总共11行,前两行功能简单不用管它,第三行的for /f意思是用“%a”来代表本目录中每个“php”网页,第二个for /f语句则是对“%a”也就是php网页进行do后面的指定操作。中间几行先跳过,看第八行的if语句。它的判断条件是“!str:-3!”=”swf”,意思是如果字符串str的最后三个字符是“sw
9、f”,那么这个字符串就是我们要找的网址。于是执行后面的操作:把网址输出到url.lst文件中。最大的问题出现了,为什么刚才我那么肯定的说“如果字符串str的最后三个字符是“swf”,那么这个字符串就是我们要找的网址”呢?我们还是先用记事本随便打开一个“有用网页”吧,由于这个学习网站上视频是swf格式的。于是我们就用记事本的查找功能查找我们要的视频地址出现在网页的哪个位置,这个是最最关键的。 图3-6但是我们可能会查找到某些没用的信息,如图3-6.不要紧,接着查找,失败几次就会成功了。如图3-7,找到了。 图3-7我们重新回到图3-5所示程序的第二个for /f中,那个“delims= ”表示对
10、文本中的每一行以空格隔开,空格与空格之间是一个字符串。tokens=2表示用后面的%i代表第二个字符串。而set str=%i表示令str这个变量等于%i这个字符串,第六行和第七行是字符串替换功能,表示把str中的双引号去掉,如果str里面还有http这几个字符,就将http前面的所有字符给去掉,这样如果满足if条件的话我们就得到了一个合格的视频地址了。大家可以对照着图3-7看看是不是这样的。所以那个批处理可以理解为“如果当前php文件的某一行的第二列(第二个字符串)在经过程序中第六行和第七行的替换后满足if的条件就输出到url.lst。”归纳起来就是:在每个php文件中,除了我们要找的那个视
11、频地址,其余的“第二列”是不会满足if后面的判断条件的。因为总共才几个字符串包含了swf这个判别条件,这几个字符串要么不在第二列,要么里面的swf不是最后三个字符。如果我哪里讲的不是很清楚的话,网上有好多地方都有这些命令的详细解释的,就不啰嗦了。3.4用迅雷导入下载列表看完枯燥的步骤三,终于可以享受批处理给我们带来的巨大便利了。运行步骤三中的批处理后会在Temp目录下产生一个url.lst的文件,里面就是我们梦寐以求的全套视频地址了。lst格式的文件是列表文件,可以直接用迅雷导入下载。具体方法,运行迅雷,然后点菜单栏里的“文件”选项,就会出现“导入下载列表”了,效果如图3-8。 图3-8然后点
12、确定,再选择个文件夹来存放你下载的视频。 3.4 自动化对视频归类本来前面四步完成后,我们的目的就达到了。但是在视频下载完成后,你会发现一个文件夹里面有300多个视频文件实在太恐怖,于是干脆另外写了个批处理程序来将这些文件移动到一些文件夹里。 思路:每个视频的名字里面都有一个下划线“_”符号,下划线前面的数字表示这视频是第几章的,后面的数字我们不用分析。这个视频是第几章的我们就把它移动到它对应的文件夹里面。图3-9是代码,这个我就不解释了。 图3-9把这个bat文件保存在那些视频所在的文件夹里,运行后产生15个文件夹,每个代表一章,那些视频都会“规规矩矩”的进入自己本应该在的文件夹里面3.5完
13、整步骤总结第一步、你对哪一套视频教程感兴趣,又想把它下下来。那就进入这个教程的“目录网页”。第二步、利用迅雷的“使用迅雷下载全部链接”这一功能,筛选出“有用网页”,把它们全部下载到一个临时的文件夹(如Temp)里面。第三步、在Temp文件夹里面新建个文本文档,文件名任意。将图3-5所示的代码逐行写进去,然后把txt的后缀改为bat后缀(如果你电脑上的文件隐藏了扩展名,更改格式的时候一定要把文件夹选项里的“隐藏已知文件类型的扩展名”前面的勾去掉,不然没法变成bat程序)。然后运行它来提取我们需要的视频地址到url.lst文件中。第四步、使用迅雷导入列表文件下载找到的所有视频。第五步、使用批处理将
14、下载的几百个视频分别移动到不同文件夹中,便于以后查找观看。4 推广应用上面我们只分析了学吧学吧上的某一个教程,那么对于这个网站上的其他教程,或者其他视频学习网站上的教程能不能使用本文中的方法呢?答案是肯定的。我们不仅能做到,还能丝毫不修改或者只修改第一个批处理程序的某一处。例如,对学吧学吧上的教程,可以照搬3.6中的步骤,甚至不用修改第一个批处理程序。再举一个例子,对于另外一个大型学习网站“enet网络书院”里的视频,由于里面的“有用网页”是shtml格式的,于是我们只需在第二步筛选的时候只下载shtml格式,在第三步把图3-5所示批处理程序中第三行的那个*.php改成*.shtml就可以了。
15、所以,如果某个视频学习网站它的“有用网页”格式是其他格式的,只需要在两个地方修改一下就可以了,完全是傻瓜式的操作。接下来介绍资源地址中出现相对地址的情况。说完了视频,我们来说说下载音乐。还是从一个例子出发在我是张学友的歌迷,没准哪天突然兴起会用本文中的方法来下载这500多首歌。不过要下载这个比上面提到的要麻烦一点。因为这儿涉及到了html语言中的“相对地址”(附录一中有介绍)。音乐网站上的音乐一般是wma格式的,我们在上面的网页随便点个链接,出现了一个正在播放歌曲的网页。我们查看这个网页的源文件,查找wma,只出现了一个匹配的结果。 图4-1“/new2/1037/29.wma”实际上也是一个
16、地址,而且正是我们要找的地址。但它是一个相对地址,而不是绝对地址。直接把这个地址给迅雷下载是下载不到任何东西的。我们必须知道它是相对于哪个地址的,于是我们把鼠标悬停在播放歌曲的播放器上,如图4-2.图 4-2出来了一个“下载”按钮用鼠标左键点那个按钮。弹出下载对话框,如图4-3。图4-3这个地址才是真正的绝对地址,比图4-1中的相对地址多了所以,要下载到那500多首歌曲,我要做几点改变。首先:筛选的时候选出htm格式的下载,第二:修改第一个批处理的内容1.将tokens=2改成tokens=42.把*.php改成*.htm3.改变判断条件if "!str:-3!"=&quo
17、t;swf"改成if "!str:-4!"="wma;"4.把相对地址省略掉的给补到!str!左边echo !str!>>url.lst改成echo 至于为什么要把tokens=2改成tokens=4,让我们回到图片4-1中,“/new2/1037/29.wma”是处在第四列的,因为旁边那个等号两边各有一个空格。判断条件也要改变,因为结尾还有个可恶的分号,所以是看倒数四个字符是否匹配。所以无论是视频还是音乐,如果你找到的地址只是相地址,并不意味着没法下载了。此时需要我们找到它省略了那些字符。然后添加进echo这个输出语句就可以了。当
18、然,图片和其他资源都可以用本文提供的方法来下载.结论及尚存在的问题 本文证明在日常的学习生活中,可以借助于批处理强大的文本分析能力来帮助我们完成一些重复性高的工作。把一些枯燥而且机械的事情交给一个简单的程序来完成,从而可以节省我们大量的工作、学习时间。充分体现了以人为本的思想。当然批处理的功能不仅仅于此,感兴趣的朋友可以自己上网去参观一些关于批处理的网站,即使不学什么东西,也可以开阔眼界。我以为,一个长期跟电脑打交道的人,学点简单的批处理在日常操作中是很有用处的,比如文中出现的第二个批处理,短短几秒钟的时间就能把几百个文件智能地“分配”到十几个文件夹里。这个方法有不适用的地方:一、 对那些采用了保护措施的视频没法下载,比如说土豆网上的视频,这类视频连迅雷都分析不出来视频地址。这时候本文的方法就使用不了,因为批处理没法提取视频地址了。二、 如果你只需下载少量的资源,比如只有几个或者十几个的情况,建议最好不要用本文的方法。 缺憾:如果用户碰到了与例子不符的情况就要修改批处理程序,不是很人性化,对于没接触过批处理的朋友来说就要自己学会变通了。如果能把第一个批处理程序用高级语言写出来,实现与用户交互就能省却很多麻烦。于是我配上了大量图片,结合2个实例尽自己最大努力讲解了几个关键的地方,希望大家起码会用。附 录 一、剔除网页中的多余
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 标准授权经销协议样本
- 消防栓安装劳务分包合同
- 设备采购招标文件全解读深度解读详解
- 外架工人分包合同
- 电信服务合同签订地点
- 工商银行个人贷款合同样本
- 花岗岩选购合同格式
- 进度奖惩合同协议
- 租房合同解除协议书撰写要点
- 京东电子合同协议范本
- 2024年贵州省卫生事业单位招聘(医学基础知识)考试题库宝典(含答案)
- 小红书种草营销师认证考试题附有答案
- 人教部编版六年级语文上册1-8单元习作作文范文
- 2024-2030年中国呼叫中心外包行业市场发展趋势与前景展望战略分析报告
- 安全生产法律法规清单(2024年5月版)
- 全约艺人合同范本
- 高一上学期年级组工作总结6篇
- 学生评语大全【120则】
- 一年级语文新教材计划
- DL-T5001-2014火力发电厂工程测量技术规程
- GB/T 19633.2-2024最终灭菌医疗器械包装第2部分:成型、密封和装配过程的确认的要求
评论
0/150
提交评论