您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 批量下载视频教程正文
1巧用批处理自动化下载海量网络资第一部分引言网络上有好多免费视频学习网站,比如“学吧学吧”和“enet网络学院”。相信热衷于各种电脑技术的人会经常去这种网站充电吧。那好,问题来了,如果你碰到一个很好的视频教程,虽然网站提供视频的下载,但只能一个一个的下载,而且找遍整个网络世界都没有全套视频的下载,怎么办?有的视频它的地址是有规律的(连续的),可以使用迅雷的“批量下载”,但是更多的视频地址是没规律的.所以要下载没规律的视频,我们就要一直重复着“打开网页”——“下载视频”——“关闭网页”的动作,显然这种机械式的操作没人喜欢。其实我们可以换个思路,在我们打开网页的时候,为什么能够观看视频呢?其实这就跟html语言有关了,在我们打开网络上的某个网页的时候,浏览器就会解释这个网页,把网页要表达的东西(比如图片,表格)展现给我们。如果想让网页播放视频,那就得在网页文件中把这个视频的地址加进去。所以一般来说视频的地址就在播放它的网页的源代码中。只要我们知道所有的视频的地址了,那接下来要下载是它们是不是很简单了?好了,思路渐渐清晰,问题是如何得到这些视频地址?既然每个视频的地址都“藏”在播放它的网页中,那我们就可以把所有包含视频地址的网页全部下下来。然后再利用强大的批处理来提取出我们需要的视频地址就可以了。做完这些我们就可以推广到更一般的情况了,而不仅仅局限于下载视频了.第二部分运行环境以及使用工具操作系统:WINDOWS系列,理论上来说,能正常使用迅雷以及批处理文件的系统都可以。下载工具:本文中使用的下载软件是迅雷,具体选择看个人喜好。这里有必要介绍一下批处理文件(以下2段资料来源于网络)。批处理文件也叫批处理程序,可以用记事本来编写,是有效的win32程序,直接双击运行。是不需要像高级语言程序那样经过编译才能使用的,这是它的便利之处。批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的命令解释器(通常是COMMAND.COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。批处理文件具有.bat或者.cmd的后缀.最简单的例子,是逐行书写在命令行中会用到的各种命令。更复杂的情况,需要使用if,for,goto等命令控制程序的运行过程,如同C,Basic等高级语言一样。不要求大家看懂本文出现的两个批处理程序,大家就把它们作exe程序吧,就像迅雷,我们只需要知道它能做什么,而不用关心它是怎么做到的。还好,这两个程序都是菜鸟级的(因为我也是菜鸟),里面的命令都是批处理中使用频率很高的,并不生僻,理解起来也不难。第三部分完整的步骤思路有了,接下来就要一步步的实现我们的目标了。我们的目的是应用,不要求大家掌握里面涉及的各种技术和理论(比如html语言,批处理语言)。知道它的原理就可以了。3.1登陆“目录网页”2图3-1图片是从=300上截下来的,相信大家都看得懂,我们就把这个作为例子。我把这个网页叫做“目录网页”,之所以称它“目录网页”,是因为这个网页就像目录一样把所有我们要下载的视频通过链接的方式组织在了这个网页上。虽然我们打开链接的时候不是直接打开视频,而是出现一个播放视频的网页,但是这些网页正是我们想要的。当然这个网页上还有一些对我们无用的链接,为了与那些无用的链接区别开,我们把这些打开后能播放视频的链接称作“有用链接”,点击“有用链接”打开的网页就叫“有用网页”。注意:这里的“目录网页”、“有用链接”和“有用网页”是我自己起的几个形象的称呼,方便表述而已。这几个称呼后文还会出现的,希望大家能够了解。为了方便讲解,本文使用了大量图片。我们把这个“有用网页作为例子。后面的一系列操作就是为了把“零起点学通C++”这一套视频(一共三百多个)下载下来。批量下载网页让我们回到图片3-1所示的网页(也就是“目录网页“)中,这个网页中有着我们需要的所有的“有用链接”,接下来就要用迅雷的“下载全部链接”这个功能了。在“目录网页”的随便一个空白处点击鼠标右键,就会弹出一个菜单,这个菜单里就有“使用迅雷下载全部链接”这个选项(见图3-2)。图3-2然后鼠标左键点击这个选项,就会出现一个对话框,如图3-3所示。后面的网址就代表这些链接所指向的“有用网页”,这样我们就把这些“有用网页”都下载下来了。可以看到所有的“有用链接”都是php格式的.于是我们点右下方的“筛选”,只下载所有php格式的.3图3-3筛选完后我们就可以点“确定”按钮了,我们把这些网页放在一个空目录里面,假设是D盘的Temp目录吧。实际上下载这300多个php网页不要什么时间,因为每个文件30多K,300个总共才10M左右。也许有人会问:如果下载了一些没用的php网页怎么办?上述方法的确会下载到不需要的php网页,但是仅仅是几个。因此,没必要那么细致。追求完美的读者可以参考附录一,里面介绍了一种方法,可以既不用“筛选”出php格式,而且能保证下载到的所有的php文件都是“有用网页”。核心——分析网页编写程序网页下载完后,我们发现这些“有用网页”的大小竟然惊人的相似,都是33K,如图3-4。图3-4难道这仅仅是巧合?网页设计的知识告诉我们:这些网页除了源代码里面包含的视频地址不一样外,其他地方是几乎一模一样的(包括这些地址在网页源代码中的位置)。由于每个下载的“有用网页”中都含有1个视频地址,我们就要用到批处理中的for/f命令,这是个对文本的操作都要用到的命令,非常强大。我还是把代码贴出来(如图3-5),然后讲思路吧。4图3-5注意:这个程序要放到“有用网页”所在的文件夹才有用,也就是我们前文提到的D:\Temp文件夹,以下分析看不懂不要紧,可以直接看下一节。这段批处理总共11行,前两行功能简单不用管它,第三行的for/f意思是用“%%a”来代表本目录中每个“php”网页,第二个for/f语句则是对“%%a”也就是php网页进行do后面的指定操作。中间几行先跳过,看第八行的if语句。它的判断条件是“!str:~-3!”=”swf”,意思是如果字符串str的最后三个字符是“swf”,那么这个字符串就是我们要找的网址。于是执行后面的操作:把网址输出到url.lst文件中。最大的问题出现了,为什么刚才我那么肯定的说“如果字符串str的最后三个字符是“swf”,那么这个字符串就是我们要找的网址”呢?我们还是先用记事本随便打开一个“有用网页”吧,由于这个学习网站上视频是swf格式的。于是我们就用记事本的查找功能查找我们要的视频地址出现在网页的哪个位置,这个是最最关键的。图3-6但是我们可能会查找到某些没用的信息,如图3-6.不要紧,接着查找,失败几次就会成功了。如图3-7,找到了。5图3-7我们重新回到图3-5所示程序的第二个for/f中,那个“delims=”表示对文本中的每一行以空格隔开,空格与空格之间是一个字符串。tokens=2表示用后面的%%i代表第二个字符串。而setstr=%%i表示令str这个变量等于%%i这个字符串,第六行和第七行是字符串替换功能,表示把str中的双引号去掉,如果str里面还有http这几个字符,就将http前面的所有字符给去掉,这样如果满足if条件的话我们就得到了一个合格的视频地址了。大家可以对照着图3-7看看是不是这样的。所以那个批处理可以理解为“如果当前php文件的某一行的第二列(第二个字符串)在经过程序中第六行和第七行的替换后满足if的条件就输出到url.lst。”归纳起来就是:在每个php文件中,除了我们要找的那个视频地址,其余的“第二列”是不会满足if后面的判断条件的。因为总共才几个字符串包含了swf这个判别条件,这几个字符串要么不在第二列,要么里面的swf不是最后三个字符。如果我哪里讲的不是很清楚的话,网上有好多地方都有这些命令的详细解释的,就不啰嗦了。3.4用迅雷导入下载列表看完枯燥的步骤三,终于可以享受批处理给我们带来的巨大便利了。运行步骤三中的批处理后会在Temp目录下产生一个url.lst的文件,里面就是我们梦寐以求的全套视频地址了。lst格式的文件是列表文件,可以直接用迅雷导入下载。具体方法,运行迅雷,然后点菜单栏里的“文件”选项,就会出现“导入下载列表”了,效果如图3-8。图3-8然后点确定,再选择个文件夹来存放你下载的视频。自动化对视频归类本来前面四步完成后,我们的目的就达到了。但是在视频下载完成后,你会发现一个文件夹里面有300多个视频文件实在太恐怖,于是干脆另外写了个批处理程序来将这些文件移动到一些文件夹里。思路:每个视频的名字里面都有一个下划线“_”符号,下划线前面的数字表示这视频是第几章的,6后面的数字我们不用分析。这个视频是第几章的我们就把它移动到它对应的文件夹里面。图3-9是代码,这个我就不解释了。图3-9把这个bat文件保存在那些视频所在的文件夹里,运行后产生15个文件夹,每个代表一章,那些视频都会“规规矩矩”的进入自己本应该在的文件夹里面3.5完整步骤总结第一步、你对哪一套视频教程感兴趣,又想把它下下来。那就进入这个教程的“目录网页”。第二步、利用迅雷的“使用迅雷下载全部链接”这一功能,筛选出“有用网页”,把它们全部下载到一个临时的文件夹(如Temp)里面。第三步、在Temp文件夹里面新建个文本文档,文件名任意。将图3-5所示的代码逐行写进去,然后把txt的后缀改为bat后缀(如果你电脑上的文件隐藏了扩展名,更改格式的时候一定要把文件夹选项里的“隐藏已知文件类型的扩展名”前面的勾去掉,不然没法变成bat程序)。然后运行它来提取我们需要的视频地址到url.lst文件中。第四步、使用迅雷导入列表文件下载找到的所有视频。第五步、使用批处理将下载的几百个视频分别移动到不同文件夹中,便于以后查找观看。4推广应用上面我们只分析了学吧学吧上的某一个教程,那么对于这个网站上的其他教程,或者其他视频学习网站上的教程能不能使用本文中的方法呢?答案是肯定的。我们不仅能做到,还能丝毫不修改或者只修改第一个批处理程序的某一处。例如,对学吧学吧上的教程,可以照搬3.6中的步骤,甚至不用修改第一个批处理程序。再举一个例子,对于另外一个大型学习网站“enet网络书院”里的视频,由于里面的“有用网页”是shtml格式的,于是我们只需在第二步筛选的时候只下载shtml格式,在第三步把图3-5所示批处理程序中第三行的那个*.php改成*.shtml就可以了。所以,如果某个视频学习网站它的“有用网页”格式是其他格式的,只需要在两个地方修改一下就可以了,完全是傻瓜式的操作。接下来介绍资源地址中出现相对地址的情况。说完了视频,我们来说说下载音乐。还是从一个例子出发在这儿有500多首张学友的歌曲,每打开一个链接,就会听到他的一首歌曲。我是张学友的歌迷,没准哪天突然兴起会用本文中的方法来下载这500多首歌。不过要下载这个比上面提到的要麻烦一点。因为这儿涉及到了html语言中的“相对地址”(附录一中有介绍)。音乐网站上的音乐一般是wma格式的,我们在上面的网页随便点个链接,出现了一个正在播放歌曲的网页。我们查看这个网页的源文件,查找wma,只出现了一个匹配的结果。7图4-1“/new2/1037/29.wma”实际上也是一个地址,而且正是我们要找的地址。但它是一个相对地址,而不是绝对地址。直接把这个地址给迅雷下载是下载不到任何东西的。我们必须知道它是相对于哪个地址的,于是我们把鼠标悬停在播放歌曲的播放器上,如图4-2.图4-2出来了一个“下载”按钮用鼠标左键点那个按钮。弹出下载对话框,如图4-3。图4-3这个地址才是真正的绝对地址,比图4-1中的相对地址多了这一大串字符。所以我们要在批处理输出字符串的时候每个相对地址前加上这一串。所以,要下载到那500多首歌曲,我要做几点改变。首
本文标题:批量下载视频教程正文
链接地址:https://www.777doc.com/doc-5304573 .html