天天看點

wget下載下傳整個網站的方法

linux下可以用wget下載下傳整個網站,而且網站連結中包含utf-8編碼的中文也能正确處理。 簡要方法記錄如下: wget --restrict-file-name=ascii -m -c -nv -np -k -E -p -R=exe,zip http://www.xxx.com 參數釋義如下: --restrict-file-name=ascii ,将檔案名儲存為ASCII格式。這樣能避免utf-8檔案名帶來的麻煩(注:1.12版才支援ascii參數值) -m 整站下載下傳,mirror的縮寫,是-N -r -l inf --no-remove-listing 這幾個參數的快捷方式,具體詳閱各自的說明 -c 續傳 -nv 不顯示詳細的下載下傳詳情 -np don’t ascend to the parent directory.即下載下傳的Web頁面不越過後面指定的 http://www.xxx.com的範圍。當然,如果你指定的是 http://www.xxx.com/aaa,則所有的web頁面都要在 http://www.xxx.com/aaa下 -k 下載下傳完成後,将頁面檔案中的連結轉換為本地連結,便于離線浏覽和制作chm等 -E 儲存html/css檔案時,使用合适的檔案字尾。例如,在某些網站有些檔案是伺服器端動态生成的,雖然是css檔案,但字尾并不是css,-E選項可以調整之 -p -np對頁面檔案做了限制,如果不加-p,則html所需的媒體檔案也會受限于-np,-p則會下載下傳html/css檔案所需的所有媒體檔案(圖檔、音頻、視訊等) -R 拒絕下載下傳的檔案字尾清單,逗号分隔

至于下載下傳到的檔案的檔案名變為了形如%A7這樣百分号加16進制數字的形式,可以用個python程式來改變檔案名: ———————————————————————————————————— import os, urllib, sys, getopt

class Renamer:          input_encoding = ""     output_encoding = ""     path = ""     is_url = False          def __init__(self, input, output, path, is_url):         self.input_encoding = input         self.output_encoding = output         self.path = path         self.is_url = is_url          def start(self):         self.rename_dir(self.path)

    def rename(self, root, path):         try:             if self.is_url:                 new = urllib.unquote(path).decode(self.input_encoding).encode(self.output_encoding)             else:                 new = path.decode(self.input_encoding).encode(self.output_encoding)             os.rename(os.path.join(root, path), os.path.join(root, new))         except:             pass

    def rename_dir(self, path):         for root, dirs, files in os.walk(path):             for f in files:                 self.rename(root, f)

            if dirs == []:                 for f in files:                     self.rename(root, f)             else:                 for d in dirs:                     self.rename_dir(os.path.join(root, d))                     self.rename(root, d) def usage():     print '''This program can change encode of files or directories.     Usage:   rename.py [OPTION]...     Options:         -h, --help                  this document.         -i, --input-encoding=ENC    set original encoding, default is UTF-8.         -o, --output-encoding=ENC   set output encoding, default is GBK.         -p, --path=PATH             choose the path which to process.         -u, --is-url                whether as a URL     '''

def main(argv):     input_encoding = "utf-8"     output_encoding = "gbk"     path = ""     is_url = True          try:         opts, args = getopt.getopt(argv, "hi:o:p:u", ["help", "input-encoding=", "output-encoding=", "path=", "is-url"])     except getopt.GetoptError:         usage()         sys.exit(2)     for opt, arg in opts:         if opt in ("-h", "--help"):             usage()             sys.exit()         elif opt in ("-i", "--input-encoding"):             input_encoding = arg         elif opt in ("-o", "--output-encoding"):             output_encoding = arg         elif opt in ("-p", "--path"):             path = arg         elif opt in ("-u", "--is-url"):             is_url = True

    rn = Renamer(input_encoding, output_encoding, path, is_url)     rn.start()

if __name__ == '__main__':     main(sys.argv[1:])

———————————————————————————————————— rename.py -i utf-8 -o gbk -p -u

檔案改名方法來自于 http://blog.csdn.net/kowity/article/details/6899256

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-716088/,如需轉載,請注明出處,否則将追究法律責任。

轉載于:http://blog.itpub.net/29867/viewspace-716088/