有時候會遇到這種情況:想從某個網站下載一批東西,目標URL是比較規整的,而且結構都一樣(僅某些字段不同)。但又懶得開IDE專門寫個腳本去弄,今天就和大家分享一下,如何利用手邊常用的軟件和工具,不用寫一行代碼或者腳本,就能完成這項工作。
需要的軟件工具有:正則表達式工具、WGET(或者CURL)、EXCEL、記事本。
你看,並沒有用到任何開發語言和腳本語言嘛。
一、獲取下載索引頁代碼
首先需要分析一下下載索引頁URL的規律,其點兩頁就能發現,僅有最后的PAGE參數內容不同,單調遞增。然后再找到最后一頁的頁面(本例里是71)。
現在把前面固定的部分提取出來(直到末尾的”page=“),復制到EXCEL里的第一列,然后把參數值放到第二列。
然后對第二列向下進行填充,規律是單調遞增,直到最末頁碼。然后把左邊復制成同樣數量。
最終結果:
然后把這個表格全部復制到記事本(notepad.exe)里。
字段(原本的表格列)之間會被\t(tab)分隔,只要替換成空字符(刪除)就行了。
這樣我們就得到了完整的索引頁下載列表。如果變量部分在鏈接的中間也不怕,反正URL參數順序是可以調換的,挪到最后即可。實在不行也可以在表格后面補一列來補全。人要學會舉一反三嘛。
把它丟給wget去搞定就行了。
這樣我們就得到了包含了最終下載目標的所有的索引頁的網頁內容。
二、分析、提取並構造最終下載目標列表
有了索引頁的代碼,我們下一步的工作就是將最終下載目標從索引頁代碼里批量提取出來。
通過對比實際鏈接和索引頁代碼的內容,我發現最終下載目標的URL里的關鍵部分已經包含在索引頁代碼里,提取出來之后前后補全鏈接其他部分即可。
這個工具是我自己寫的哈,用正則表達式處理文本用的。以后有空會做一個命令行版本。
這里有一個小技巧,就是提取關鍵數據的時候前后可以留一點尾巴,補全鏈接的時候可以用。在本例里我就留了前面的冒號和后面的斜杠。補全鏈接的時候分別替換成鏈接前綴和鏈接后綴就OK了。注意一定不能留前后相同的,也不能和關鍵內容重復。如果實際情況不允許的話,可以繼續用上文介紹的EXCEL表格的方式批量補全鏈接。
由於所有的索引頁代碼結構完全一樣,所以用相同的正則就能全部提取出來。我開發的這個工具有一個批量提取的功能,我相信其他正則表達式工具也都有類似的功能。
(為了演示,沒有拿全部的71個文件)
現在打開剛剛生成的列表文件,將預留的”尾巴“替換成真實URL的前后部分。
這樣,我們就得到了干凈的下載列表。
然后你就可以把這個列表拿到一個網速比較好的機器上,繼續交給wget就OK了。
搞定,收工
其實嚴格來說,這個過程並不復雜。只是對常見工具和軟件的靈活應用和組合。但這個思路我個人認為還是值得總結的。
現在很多工具都有提供列表導入以及命令行調用等多種使用方式,在利用它們處理某些具體事項的時候,完全可以用其他手段構造出列表甚至簡單的腳本供這些工具調用,從而省去自己實現這些工具功能的工作,何樂不為呢?