Webスクレイピングのプログラムを作成するにあたって役立つ情報をまとめました.
1.Webスクレイピングとは
ウェブスクレイピング(Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラー(Web crawler) あるいはウェブ・スパイダー(Web spider)とも呼ばれる。
— Wikipedia: ウェブスクレイピング
2.HTTPヘッダ
実際にWebページをたどっていく際には(1)HTTPリクエストを投げる→(2)レスポンスを解析するという処理を繰り返す必要があります.
このリクエストを投げるとき、結果を解析するときに重要なのがHTTPヘッダの情報です.
リクエストのヘッダを正しく設定することで想定したレスポンスを取得できるようになります.またレスポンスのヘッダを解析することで、コンテンツ部分の解析を効率的・効果的に行うことができるようになります.
(1)リクエスト フィールド
User-Agent
ブラウザ情報を表す.正しく設定されていないとエラーを返すサーバが存在する.
実在するUserAgent情報を利用すればエラーとはならないが、IE専用サイトやモバイル専用サイトも存在するので使い分ける必要がある.
例 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0
Referer
リンク元のWebページを示すURL.これが正しく設定されていないとエラーを返すサーバが存在する.
例 Referer: http://yahoo.co.jp
Cookie
前回接続時にレスポンスヘッダのSet-Cookieに設定されていた値を設定しないとエラーを返される場合がある.
Cookieを利用してセッション管理をしているウェブサイト、ウェブアプリにリクエストを送る際には設定が必須となる.
例 Cookie: $Version=1; Skin=new;
(2)レスポンス フィールド
Content-Type
コンテンツのMIMEタイプを表します.この値に応じてその後の処理を振り分けることになる重要な値です.
全タイプについては以下のサイトを参照.
http://www.iana.org/assignments/media-types/media-types.xhtml
スクレイピングで主に利用するのは以下のタイプです.
HTMLが返って来うるもの.
- text/html : HTMLが返ってくるのはこれ
- text/plain : Apacheの設定によっては、htmlのコンテンツがこのMIMEタイプで返ってくる.
その他スクレイピング中によく判定するもの
- image/* : 画像コンテンツ
- video/* : 映像コンテンツ
- text/javascript : javascript
- application/javascript : javascript
- text/css : css
Content-Length
コンテンツの長さを8bit byteで表示する.