[BlueLeaf1336]> PROBLEMS> 探求其之弐>

探求其之弐 > HTMLデータをダウンロードする

historyTOP

2005/07/24:作成
2005/08/01:更新

GETコマンドに対するいくつかのWebサーバの応答TOP

続きです(前回分)。前回の最後で、「次回からHTTPデータのダウンロードに入る」と書きましたが、もう少しGETコマンドに対するWebサーバの応答について調べてみることにします。前回作成したプログラムを使って、適当にサーバ名を入力して見ました。

==================================================
2005/07/25 00:40:37 (月)
--------------------------------------------------
HOST:www.google.co.jp
PAGE:/
--------------------------------------------------
HTTP/1.0 302 Found
Location: http://www.google.co.jp/cxfer?c=PREF%3D:TM%3D1122219647:S%3DkgFx7qIaXkfjSfAg&prev=/
Set-Cookie: PREF=ID=61fbca81637dbb58:CR=1:TM=1122219647:LM=1122219647:S=jHxo8WqWK4A2_ZYF; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Content-Type: text/html
Server: GWS/2.1
Content-Length: 217
Date: Sun, 24 Jul 2005 15:40:47 GMT
Connection: Keep-Alive
--------------------------------------------------

==================================================
2005/07/25 00:41:00 (月)
--------------------------------------------------
HOST:www.samurai.com
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:41:06 GMT
Server: Apache/2.0.54 (FreeBSD) PHP/4.4.0
Vary: Accept-Encoding
Content-Length: 451
Connection: close
Content-Type: text/html; charset=ISO-8859-1
--------------------------------------------------

==================================================
2005/07/25 00:41:36 (月)
--------------------------------------------------
HOST:www.geocities.co.jp
PAGE:/
--------------------------------------------------
HTTP/1.1 301 Moved Permanently
Date: Sun, 24 Jul 2005 15:41:41 GMT
Location: http://jp.geocities.yahoo.com
Connection: close
Content-Type: text/html; charset=iso-8859-1
--------------------------------------------------

==================================================
2005/07/25 00:41:53 (月)
--------------------------------------------------
HOST:jp.geocities.yahoo.com
PAGE:/
--------------------------------------------------
[jp.geocities.yahoo.com] IS INVALID ADDRSS.
--------------------------------------------------

==================================================
2005/07/25 00:42:01 (月)
--------------------------------------------------
HOST:www.geocities.yahoo.com
PAGE:/
--------------------------------------------------
HTTP/1.0 200 OK
Date: Sun, 24 Jul 2005 15:42:07 GMT
P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Connection: close
Content-Type: text/html
--------------------------------------------------

==================================================
2005/07/25 00:42:14 (月)
--------------------------------------------------
HOST:www.yahoo.com
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:42:19 GMT
P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private
Vary: User-Agent
Set-Cookie: FPB=u6ui614a511e7dmr; expires=Thu, 01-Jun-2006 19:00:00 GMT; path=/; domain=www.yahoo.com
Connection: close
Content-Type: text/html
--------------------------------------------------

==================================================
2005/07/25 00:42:21 (月)
--------------------------------------------------
HOST:www.yahoo.co.jp
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:42:26 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Expires: -1
Pragma: no-cache
Cache-Control: no-cache
Connection: close
Content-Type: text/html;charset=euc-jp
--------------------------------------------------

==================================================
2005/07/25 00:42:31 (月)
--------------------------------------------------
HOST:www.microsoft.co.jp
PAGE:/
--------------------------------------------------
HTTP/1.1 302 Object moved
Connection: close
Date: Sun, 24 Jul 2005 15:42:37 GMT
Server: Microsoft-IIS/6.0
Level: C2
X-Powered-By: ASP.NET
Location: http://www.microsoft.com
Content-Length: 145
Content-Type: text/html
Cache-control: private
--------------------------------------------------

==================================================
2005/07/25 00:42:48 (月)
--------------------------------------------------
HOST:www.iis.co.jp
PAGE:/
--------------------------------------------------
HTTP/1.1 404 Not found
Server: Zeus/4.2
Date: Sun, 24 Jul 2005 15:42:52 GMT
Connection: close
Content-Type: text/html
--------------------------------------------------

==================================================
2005/07/25 00:43:03 (月)
--------------------------------------------------
HOST:www.iis.com
PAGE:/
--------------------------------------------------
HTTP/1.1 301 Error
Location: http://www.iis.com/
Server: Microsoft-IIS/5.0
Content-Type: text/html
Content-Length: 142
--------------------------------------------------

==================================================
2005/07/25 00:43:36 (月)
--------------------------------------------------
HOST:www.http.com
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:45:19 GMT
Server: Apache/2.0.49 (Unix) PHP/4.3.9
X-Powered-By: PHP/4.3.9
Connection: close
Content-Type: text/html; charset=ISO-8859-1
--------------------------------------------------

==================================================
2005/07/25 00:47:17 (月)
--------------------------------------------------
HOST:www.unix.com
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:47:23 GMT
Server: Apache/1.3.28 (Unix) PHP/4.3.10
X-Powered-By: PHP/4.3.10
Connection: close
Content-Type: text/html
--------------------------------------------------

==================================================
2005/07/25 00:47:29 (月)
--------------------------------------------------
HOST:www.fjtk.com
PAGE:/
--------------------------------------------------
[www.fjtk.com] IS INVALID ADDRSS.
--------------------------------------------------

==================================================
2005/07/25 00:47:42 (月)
--------------------------------------------------
HOST:www.delphi.com
PAGE:/
--------------------------------------------------
HTTP/1.1 200 OK
Date: Sun, 24 Jul 2005 15:47:48 GMT
Server: Jetty/4.2.x (SunOS/5.8 sparc java/1.3.1_08)
Content-Type: text/html; charset=utf-8
Content-Length: 13550
X-Cache: MISS from delphi.com
Connection: close
--------------------------------------------------

ヘッダについて考察TOP

2行目以降の順番は特に定まっていないようですが、1行目は「HTTP/1.X XXX XX...X」の形式になっています。やっぱり、1行目をまず読み込んで、「200 OK」をチェックしてから残りのデータの取得に入るのがよさそうです。

ただ、ヘッダ部分の長さが特に決まっていないのが気になります。もちろんマイクロソフト専用ならよいわけですが...。なぜ気になるかというと、ヘッダ部分は基本的に「そのページが存在するかどうかのチェック」だけに使用するわけですから、ページが存在することさえわかってしまえば、読み飛ばすことになります。そうした場合、どの程度のサイズを読み込んだら、おおよそヘッダ部分が終わったとみなせるか(なんとはなしにですが)、妄想しておけると後の方針が決めやすそうな気がするためです。

でもまあいいか。それに、あれです。「Content-Type」も役に立ちそうです。「text/html」となっていればそのページは絶対にバイナリファイルでないことがわかるし「charset=utf-8」とあれば、それなりに文字コードの変換をかけることができます。やっぱりそれなりに対応しないと駄目でしょう。

技術情報のページデータについて考察TOP

前回は、マイクロソフトの技術情報のページデータのヘッダ部分がどんなものかを、ソースをまるまま引用しましたが、今回もそれを使って、何処まで読み込んだら「タイトル」と「説明」が取り出せるかを調べてみます。...。決まりました。再び引用します。

... <title>Microsoft Windows レジストリの説明</title><meta name="robots" content="nofollow,noarchive"><meta name="KBParents" content="7274 5732 5881 6843 6842 3208 6519 5903 1167 3198 6728 1163 3194 3188 6719 6713 6513 3071 1139 5872 7341 6912 7017 1131 6898 5924 1173 5918 5917 5914 7940 3228 5902 7482 3223 3222 3221 7606 6321 5892 5891 3219 5887 5886 5885 "><meta name="Keywords" content="kbinfo kbregistry kbenv kbfaq KB256986"><meta name="Description" content="Microsoft Windows レジストリについて説明し、その編集方法に関する情報を提供します。"><meta name="MS.LOCALE" content="ja"> ...

まず、必要な箇所としては「<title>」から「"><meta name="MS.LOCALE"」までで、この隙間に日本語版であろうが英語版であろうが、タイトルと説明文が含まれているようです。今現在は。

次にタイトルは「<title>」から「</title>」まで。これは簡単です。

最後に説明は「<meta name="Description" content="」から「"><meta name="MS.LOCALE"」まで。こっちはなんとも言えず気持が悪いです。

いやいや、実際はどの3つも微妙です。たとえば「<title>」を見つけるようにしてしまうと、タグの途中に改行があった場合や、閉じタグまでにオプション(指定できるかどうか知らないんですが...)を記述されたら、ハイソレマデヨ、なあたり。これは、目印に使おうとしている全てのタグにいえることです。

ま、いいか。そんなこと言い出したら終わりません。

2005/08/01TOP

わざわざ「GET」コマンドを送って「改行2連続でヘッダ完了」なんて判定しなくても、最初から「HEAD」コマンドでヘッダだけ取得すればすむのか。

そうでもないのか...。「HEAD」コマンド送っても「GET」と同じ全データ返すサーバーがあります。「www.yahoo.co.jp」とか。他は知りませんが。

しかし、全く進みません。9月末までにやってしまわないと、光ファイバー100MBのモニター期間が終わってしまうのに。

EOFTOP