批量下載視頻教程正文_第1頁
批量下載視頻教程正文_第2頁
批量下載視頻教程正文_第3頁
批量下載視頻教程正文_第4頁
批量下載視頻教程正文_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、巧用批處理自動(dòng)化下載海量網(wǎng)絡(luò)資源第一部分 引言網(wǎng)絡(luò)上有好多免費(fèi)視頻學(xué)習(xí)網(wǎng)站,比如“學(xué)吧學(xué)吧”和“enet網(wǎng)絡(luò)學(xué)院”。相信熱衷于各種電腦技術(shù)的人會(huì)經(jīng)常去這種網(wǎng)站充電吧。那好,問題來了,如果你碰到一個(gè)很好的視頻教程,雖然網(wǎng)站提供視頻的下載,但只能一個(gè)一個(gè)的下載,而且找遍整個(gè)網(wǎng)絡(luò)世界都沒有全套視頻的下載,怎么辦?有的視頻它的地址是有規(guī)律的(連續(xù)的),可以使用迅雷的“批量下載”,但是更多的視頻地址是沒規(guī)律的.所以要下載沒規(guī)律的視頻,我們就要一直重復(fù)著“打開網(wǎng)頁”“下載視頻”“關(guān)閉網(wǎng)頁”的動(dòng)作,顯然這種機(jī)械式的操作沒人喜歡。其實(shí)我們可以換個(gè)思路,在我們打開網(wǎng)頁的時(shí)候,為什么能夠觀看視頻呢?其實(shí)這就跟ht

2、ml語言有關(guān)了,在我們打開網(wǎng)絡(luò)上的某個(gè)網(wǎng)頁的時(shí)候,瀏覽器就會(huì)解釋這個(gè)網(wǎng)頁,把網(wǎng)頁要表達(dá)的東西(比如圖片,表格)展現(xiàn)給我們。如果想讓網(wǎng)頁播放視頻,那就得在網(wǎng)頁文件中把這個(gè)視頻的地址加進(jìn)去。所以一般來說視頻的地址就在播放它的網(wǎng)頁的源代碼中。只要我們知道所有的視頻的地址了,那接下來要下載是它們是不是很簡單了?好了,思路漸漸清晰,問題是如何得到這些視頻地址?既然每個(gè)視頻的地址都“藏”在播放它的網(wǎng)頁中,那我們就可以把所有包含視頻地址的網(wǎng)頁全部下下來。然后再利用強(qiáng)大的批處理來提取出我們需要的視頻地址就可以了。做完這些我們就可以推廣到更一般的情況了,而不僅僅局限于下載視頻了. 第二部分運(yùn)行環(huán)境以及使用工具操

3、作系統(tǒng):WINDOWS系列,理論上來說,能正常使用迅雷以及批處理文件的系統(tǒng)都可以。下載工具:本文中使用的下載軟件是迅雷,具體選擇看個(gè)人喜好。這里有必要介紹一下批處理文件(以下2段資料來源于網(wǎng)絡(luò))。批處理文件也叫批處理程序,可以用記事本來編寫,是有效的win32程序,直接雙擊運(yùn)行。是不需要像高級(jí)語言程序那樣經(jīng)過編譯才能使用的,這是它的便利之處。批處理是一種簡化的腳本語言,它應(yīng)用于DOS和Windows系統(tǒng)中,它是由DOS或者Windows系統(tǒng)內(nèi)嵌的命令解釋器(通常是COMMAND.COM或者CMD.EXE)解釋運(yùn)行。類似于Unix中的Shell腳本。批處理文件具有.bat或者.cmd的后綴.最簡

4、單的例子,是逐行書寫在命令行中會(huì)用到的各種命令。更復(fù)雜的情況,需要使用if,for,goto等命令控制程序的運(yùn)行過程,如同C,Basic等高級(jí)語言一樣。 不要求大家看懂本文出現(xiàn)的兩個(gè)批處理程序,大家就把它們作exe程序吧,就像迅雷,我們只需要知道它能做什么,而不用關(guān)心它是怎么做到的。還好,這兩個(gè)程序都是菜鳥級(jí)的(因?yàn)槲乙彩遣锁B),里面的命令都是批處理中使用頻率很高的,并不生僻,理解起來也不難。第三部分 完整的步驟思路有了,接下來就要一步步的實(shí)現(xiàn)我們的目標(biāo)了。我們的目的是應(yīng)用,不要求大家掌握里面涉及的各種技術(shù)和理論(比如html語言,批處理語言)。知道它的原理就可以了。3.1 登陸“目錄網(wǎng)頁”

5、圖3-1 圖片是從當(dāng)然這個(gè)網(wǎng)頁上還有一些對(duì)我們無用的鏈接,為了與那些無用的鏈接區(qū)別開,我們把這些打開后能播放視頻的鏈接稱作“有用鏈接”,點(diǎn)擊“有用鏈接”打開的網(wǎng)頁就叫“有用網(wǎng)頁”。注意:這里的“目錄網(wǎng)頁”、“有用鏈接”和“有用網(wǎng)頁”是我自己起的幾個(gè)形象的稱呼,方便表述而已。這幾個(gè)稱呼后文還會(huì)出現(xiàn)的,希望大家能夠了解。為了方便講解,本文使用了大量圖片。我們把這個(gè)“有用網(wǎng)頁作為例子。后面的一系列操作就是為了把“零起點(diǎn)學(xué)通C+”這一套視頻(一共三百多個(gè))下載下來。 3.2 批量下載網(wǎng)頁讓我們回到圖片3-1所示的網(wǎng)頁(也就是“目錄網(wǎng)頁“)中,這個(gè)網(wǎng)頁中有著我們需要的所有的“有用鏈接”,接下來就要用迅雷

6、的“下載全部鏈接”這個(gè)功能了。在“目錄網(wǎng)頁”的隨便一個(gè)空白處點(diǎn)擊鼠標(biāo)右鍵,就會(huì)彈出一個(gè)菜單,這個(gè)菜單里就有“使用迅雷下載全部鏈接”這個(gè)選項(xiàng)(見圖3-2)。 圖3-2然后鼠標(biāo)左鍵點(diǎn)擊這個(gè)選項(xiàng),就會(huì)出現(xiàn)一個(gè)對(duì)話框,如圖3-3所示。后面的網(wǎng)址就代表這些鏈接所指向的“有用網(wǎng)頁”,這樣我們就把這些“有用網(wǎng)頁”都下載下來了??梢钥吹剿械摹坝杏面溄印倍际莗hp格式的.于是我們點(diǎn)右下方的“篩選”,只下載所有php格式的. 圖3-3 篩選完后我們就可以點(diǎn)“確定”按鈕了,我們把這些網(wǎng)頁放在一個(gè)空目錄里面,假設(shè)是D盤的Temp目錄吧。實(shí)際上下載這300多個(gè)php網(wǎng)頁不要什么時(shí)間,因?yàn)槊總€(gè)文件30多K,300個(gè)總共

7、才10M左右。也許有人會(huì)問:如果下載了一些沒用的php網(wǎng)頁怎么辦?上述方法的確會(huì)下載到不需要的php網(wǎng)頁,但是僅僅是幾個(gè)。因此,沒必要那么細(xì)致。追求完美的讀者可以參考附錄一,里面介紹了一種方法,可以既不用“篩選”出php格式,而且能保證下載到的所有的php文件都是“有用網(wǎng)頁”。3.3 核心分析網(wǎng)頁 編寫程序 網(wǎng)頁下載完后,我們發(fā)現(xiàn)這些“有用網(wǎng)頁”的大小竟然驚人的相似,都是33K,如圖3-4。 圖3-4難道這僅僅是巧合?網(wǎng)頁設(shè)計(jì)的知識(shí)告訴我們:這些網(wǎng)頁除了源代碼里面包含的視頻地址不一樣外,其他地方是幾乎一模一樣的(包括這些地址在網(wǎng)頁源代碼中的位置)。 由于每個(gè)下載的“有用網(wǎng)頁”中都含有1個(gè)視頻地

8、址,我們就要用到批處理中的for /f 命令,這是個(gè)對(duì)文本的操作都要用到的命令,非常強(qiáng)大。我還是把代碼貼出來(如圖3-5),然后講思路吧。 圖3-5注意:這個(gè)程序要放到“有用網(wǎng)頁”所在的文件夾才有用,也就是我們前文提到的D:Temp文件夾,以下分析看不懂不要緊,可以直接看下一節(jié)。這段批處理總共11行,前兩行功能簡單不用管它,第三行的for /f意思是用“%a”來代表本目錄中每個(gè)“php”網(wǎng)頁,第二個(gè)for /f語句則是對(duì)“%a”也就是php網(wǎng)頁進(jìn)行do后面的指定操作。中間幾行先跳過,看第八行的if語句。它的判斷條件是“!str:-3!”=”swf”,意思是如果字符串str的最后三個(gè)字符是“sw

9、f”,那么這個(gè)字符串就是我們要找的網(wǎng)址。于是執(zhí)行后面的操作:把網(wǎng)址輸出到url.lst文件中。最大的問題出現(xiàn)了,為什么剛才我那么肯定的說“如果字符串str的最后三個(gè)字符是“swf”,那么這個(gè)字符串就是我們要找的網(wǎng)址”呢?我們還是先用記事本隨便打開一個(gè)“有用網(wǎng)頁”吧,由于這個(gè)學(xué)習(xí)網(wǎng)站上視頻是swf格式的。于是我們就用記事本的查找功能查找我們要的視頻地址出現(xiàn)在網(wǎng)頁的哪個(gè)位置,這個(gè)是最最關(guān)鍵的。 圖3-6但是我們可能會(huì)查找到某些沒用的信息,如圖3-6.不要緊,接著查找,失敗幾次就會(huì)成功了。如圖3-7,找到了。 圖3-7我們重新回到圖3-5所示程序的第二個(gè)for /f中,那個(gè)“delims= ”表示對(duì)

10、文本中的每一行以空格隔開,空格與空格之間是一個(gè)字符串。tokens=2表示用后面的%i代表第二個(gè)字符串。而set str=%i表示令str這個(gè)變量等于%i這個(gè)字符串,第六行和第七行是字符串替換功能,表示把str中的雙引號(hào)去掉,如果str里面還有http這幾個(gè)字符,就將http前面的所有字符給去掉,這樣如果滿足if條件的話我們就得到了一個(gè)合格的視頻地址了。大家可以對(duì)照著圖3-7看看是不是這樣的。所以那個(gè)批處理可以理解為“如果當(dāng)前php文件的某一行的第二列(第二個(gè)字符串)在經(jīng)過程序中第六行和第七行的替換后滿足if的條件就輸出到url.lst?!睔w納起來就是:在每個(gè)php文件中,除了我們要找的那個(gè)視

11、頻地址,其余的“第二列”是不會(huì)滿足if后面的判斷條件的。因?yàn)榭偣膊艓讉€(gè)字符串包含了swf這個(gè)判別條件,這幾個(gè)字符串要么不在第二列,要么里面的swf不是最后三個(gè)字符。如果我哪里講的不是很清楚的話,網(wǎng)上有好多地方都有這些命令的詳細(xì)解釋的,就不啰嗦了。3.4用迅雷導(dǎo)入下載列表看完枯燥的步驟三,終于可以享受批處理給我們帶來的巨大便利了。運(yùn)行步驟三中的批處理后會(huì)在Temp目錄下產(chǎn)生一個(gè)url.lst的文件,里面就是我們夢寐以求的全套視頻地址了。lst格式的文件是列表文件,可以直接用迅雷導(dǎo)入下載。具體方法,運(yùn)行迅雷,然后點(diǎn)菜單欄里的“文件”選項(xiàng),就會(huì)出現(xiàn)“導(dǎo)入下載列表”了,效果如圖3-8。 圖3-8然后點(diǎn)

12、確定,再選擇個(gè)文件夾來存放你下載的視頻。 3.4 自動(dòng)化對(duì)視頻歸類本來前面四步完成后,我們的目的就達(dá)到了。但是在視頻下載完成后,你會(huì)發(fā)現(xiàn)一個(gè)文件夾里面有300多個(gè)視頻文件實(shí)在太恐怖,于是干脆另外寫了個(gè)批處理程序來將這些文件移動(dòng)到一些文件夾里。 思路:每個(gè)視頻的名字里面都有一個(gè)下劃線“_”符號(hào),下劃線前面的數(shù)字表示這視頻是第幾章的,后面的數(shù)字我們不用分析。這個(gè)視頻是第幾章的我們就把它移動(dòng)到它對(duì)應(yīng)的文件夾里面。圖3-9是代碼,這個(gè)我就不解釋了。 圖3-9把這個(gè)bat文件保存在那些視頻所在的文件夾里,運(yùn)行后產(chǎn)生15個(gè)文件夾,每個(gè)代表一章,那些視頻都會(huì)“規(guī)規(guī)矩矩”的進(jìn)入自己本應(yīng)該在的文件夾里面3.5完

13、整步驟總結(jié)第一步、你對(duì)哪一套視頻教程感興趣,又想把它下下來。那就進(jìn)入這個(gè)教程的“目錄網(wǎng)頁”。第二步、利用迅雷的“使用迅雷下載全部鏈接”這一功能,篩選出“有用網(wǎng)頁”,把它們?nèi)肯螺d到一個(gè)臨時(shí)的文件夾(如Temp)里面。第三步、在Temp文件夾里面新建個(gè)文本文檔,文件名任意。將圖3-5所示的代碼逐行寫進(jìn)去,然后把txt的后綴改為bat后綴(如果你電腦上的文件隱藏了擴(kuò)展名,更改格式的時(shí)候一定要把文件夾選項(xiàng)里的“隱藏已知文件類型的擴(kuò)展名”前面的勾去掉,不然沒法變成bat程序)。然后運(yùn)行它來提取我們需要的視頻地址到url.lst文件中。第四步、使用迅雷導(dǎo)入列表文件下載找到的所有視頻。第五步、使用批處理將

14、下載的幾百個(gè)視頻分別移動(dòng)到不同文件夾中,便于以后查找觀看。4 推廣應(yīng)用上面我們只分析了學(xué)吧學(xué)吧上的某一個(gè)教程,那么對(duì)于這個(gè)網(wǎng)站上的其他教程,或者其他視頻學(xué)習(xí)網(wǎng)站上的教程能不能使用本文中的方法呢?答案是肯定的。我們不僅能做到,還能絲毫不修改或者只修改第一個(gè)批處理程序的某一處。例如,對(duì)學(xué)吧學(xué)吧上的教程,可以照搬3.6中的步驟,甚至不用修改第一個(gè)批處理程序。再舉一個(gè)例子,對(duì)于另外一個(gè)大型學(xué)習(xí)網(wǎng)站“enet網(wǎng)絡(luò)書院”里的視頻,由于里面的“有用網(wǎng)頁”是shtml格式的,于是我們只需在第二步篩選的時(shí)候只下載shtml格式,在第三步把圖3-5所示批處理程序中第三行的那個(gè)*.php改成*.shtml就可以了。

15、所以,如果某個(gè)視頻學(xué)習(xí)網(wǎng)站它的“有用網(wǎng)頁”格式是其他格式的,只需要在兩個(gè)地方修改一下就可以了,完全是傻瓜式的操作。接下來介紹資源地址中出現(xiàn)相對(duì)地址的情況。說完了視頻,我們來說說下載音樂。還是從一個(gè)例子出發(fā)在我是張學(xué)友的歌迷,沒準(zhǔn)哪天突然興起會(huì)用本文中的方法來下載這500多首歌。不過要下載這個(gè)比上面提到的要麻煩一點(diǎn)。因?yàn)檫@兒涉及到了html語言中的“相對(duì)地址”(附錄一中有介紹)。音樂網(wǎng)站上的音樂一般是wma格式的,我們在上面的網(wǎng)頁隨便點(diǎn)個(gè)鏈接,出現(xiàn)了一個(gè)正在播放歌曲的網(wǎng)頁。我們查看這個(gè)網(wǎng)頁的源文件,查找wma,只出現(xiàn)了一個(gè)匹配的結(jié)果。 圖4-1“/new2/1037/29.wma”實(shí)際上也是一個(gè)

16、地址,而且正是我們要找的地址。但它是一個(gè)相對(duì)地址,而不是絕對(duì)地址。直接把這個(gè)地址給迅雷下載是下載不到任何東西的。我們必須知道它是相對(duì)于哪個(gè)地址的,于是我們把鼠標(biāo)懸停在播放歌曲的播放器上,如圖4-2.圖 4-2出來了一個(gè)“下載”按鈕用鼠標(biāo)左鍵點(diǎn)那個(gè)按鈕。彈出下載對(duì)話框,如圖4-3。圖4-3這個(gè)地址才是真正的絕對(duì)地址,比圖4-1中的相對(duì)地址多了所以,要下載到那500多首歌曲,我要做幾點(diǎn)改變。首先:篩選的時(shí)候選出htm格式的下載,第二:修改第一個(gè)批處理的內(nèi)容1.將tokens=2改成tokens=42.把*.php改成*.htm3.改變判斷條件if "!str:-3!"=&quo

17、t;swf"改成if "!str:-4!"="wma;"4.把相對(duì)地址省略掉的給補(bǔ)到!str!左邊echo !str!>>url.lst改成echo 至于為什么要把tokens=2改成tokens=4,讓我們回到圖片4-1中,“/new2/1037/29.wma”是處在第四列的,因?yàn)榕赃吥莻€(gè)等號(hào)兩邊各有一個(gè)空格。判斷條件也要改變,因?yàn)榻Y(jié)尾還有個(gè)可惡的分號(hào),所以是看倒數(shù)四個(gè)字符是否匹配。所以無論是視頻還是音樂,如果你找到的地址只是相地址,并不意味著沒法下載了。此時(shí)需要我們找到它省略了那些字符。然后添加進(jìn)echo這個(gè)輸出語句就可以了。當(dāng)

18、然,圖片和其他資源都可以用本文提供的方法來下載.結(jié)論及尚存在的問題 本文證明在日常的學(xué)習(xí)生活中,可以借助于批處理強(qiáng)大的文本分析能力來幫助我們完成一些重復(fù)性高的工作。把一些枯燥而且機(jī)械的事情交給一個(gè)簡單的程序來完成,從而可以節(jié)省我們大量的工作、學(xué)習(xí)時(shí)間。充分體現(xiàn)了以人為本的思想。當(dāng)然批處理的功能不僅僅于此,感興趣的朋友可以自己上網(wǎng)去參觀一些關(guān)于批處理的網(wǎng)站,即使不學(xué)什么東西,也可以開闊眼界。我以為,一個(gè)長期跟電腦打交道的人,學(xué)點(diǎn)簡單的批處理在日常操作中是很有用處的,比如文中出現(xiàn)的第二個(gè)批處理,短短幾秒鐘的時(shí)間就能把幾百個(gè)文件智能地“分配”到十幾個(gè)文件夾里。這個(gè)方法有不適用的地方:一、 對(duì)那些采用了保護(hù)措施的視頻沒法下載,比如說土豆網(wǎng)上的視頻,這類視頻連迅雷都分析不出來視頻地址。這時(shí)候本文的方法就使用不了,因?yàn)榕幚頉]法提取視頻地址了。二、 如果你只需下載少量的資源,比如只有幾個(gè)或者十幾個(gè)的情況,建議最好不要用本文的方法。 缺憾:如果用戶碰到了與例子不符的情況就要修改批處理程序,不是很人性化,對(duì)于沒接觸過批處理的朋友來說就要自己學(xué)會(huì)變通了。如果能把第一個(gè)批處理程序用高級(jí)語言寫出來,實(shí)現(xiàn)與用戶交互就能省卻很多麻煩。于是我配上了大量圖片,結(jié)合2個(gè)實(shí)例盡自己最大努力講解了幾個(gè)關(guān)鍵的地方,希望大家起碼會(huì)用。附 錄 一、剔除網(wǎng)頁中的多余

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論