2010年7月15日木曜日

◆Webページをダウンロードする

WEBページをダウンロードし、文字列解析を行って様々な情報を得たい。
といった事はよくある。
そこでWEBページをダウンロードしてみる。
Bitsではうまくいかない(静的なページであればうまくいくのかもしれないが)ので、WebClientクラスを使う。

$source = "http://www.yahoo.co.jp"
$destination = "d:\desktop\test.html"

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


ダウンロードしてきたHTMLを表示した結果は、こんな感じ。
20100715111508

いつものYahooのページと若干異なっていることが判る。
これは、Webサイトがアクセスしてきたブラウザに応じて返すHTMLを変えているためであろう。
そこで、WebClientにヘッダー情報を付加してIEに偽装してみる。

$source = "http://www.yahoo.co.jp"
$destination = "d:\desktop\test.html"
$userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"

$wc = New-Object System.Net.WebClient
$wc.Headers.Add("user-agent",$userAgent)
$wc.DownloadFile($source,$destination)


結果はこんな感じ、
20100715112023

いつもの表示になった。


ちなみに、非同期でダウンロードするには、DownloadFileの代わりにDownloadFileAsync、文字列としてダウンロードするには、DownloadStringを使えばよさそうだ。

0 件のコメント:

コメントを投稿