用powershell實做wget
在unix-like系統上,有個wget,可以用來抓取遠方主機的檔案(如網頁)下來,然後做後續的處理…在windows除非特別去找軟體來裝,否則沒此工具可用。 最近在玩Flickr的API,需要這樣的功能。加上電腦上都有裝powershell。於是乎,就想利用powershell來模擬wget的處理。 一開始,寫了如下的function來使用… function wget([string]$url, [string]$file){ $client = new-object System.Net.WebClient $client.DownloadFile($url, $file) } Flickr所回傳的XML是抓下來了。不過,因為他是web service,編碼是採用utf8。因此,抓下來的檔案中如果有中文字,不經轉碼直接拿來處理的話…不幸的,會有問題…… 因此,做如下的處理來轉碼。利用get-content 先將抓回來的檔案轉成utf8後,再去處理。這樣,XML才會正常! $dl_file=[System.IO.Path]::GetTempFileName() wget("http://url", $dl_file) [xml]$list = get-content $dl_file -encoding utf8 不過,玩到後來,因為每次所抓的資料不多,不想將Flickr API所傳回的資料存放在檔案內。想直接在記憶體內處理即可。但…怎麼找,都找不到一個簡單的轉字串編碼的處理方式。 只好還是乖乖K一下 MSDN ,沒想到,其實只要如下的一行設定,問題就輕鬆解決了! function wget([string]$url){ $client = new-object System.Net.WebClient $client.Encoding = [System.Text.Encoding]::GetEncoding("utf-8") return $client.DownloadString($url) } 修改後的wget,使用方式如下… $result=wget("http://url"...