スクレイピングをしてみよう 認証・リダイレクト回避編
今日はスクレイピング時に引っかがりがちな年齢認証などを回避してhtmlを取得する方法について(今日どハマりしたので
例えば、
- 取得したいページがリファラーで制限されている
- アダルト商品など年齢認証で目的のページにたどり着くのにクリックなどが必要
こんなケースに直面した場合の対処が必要になってくると思います。
年齢認証などは簡単な場合はURLに少し手を入れるだけで特に問題なく取得できるケースも多いですが、リファラーやcookieで制限されると少し手を加えないといけません。
Simple HTML DOM Parserで普通に取得する場合
普通はこんな感じでfile_get_htmlだと思います。
$html = file_get_html($item_url); // $item_urlは取得したいページのurl
リファラーやcookieを設定して取得する場合
$opts = array( 'http'=>array( 'method' => 'GET', 'header' => "Referer: http://www.targetsitename.com\r\n". "Cookie: adult=1\r\n") ); // リファラーをhttp://www.targetsitename.comにセット // 認証のクッキーの名前が「adult」で値が「1」でパスできる場合 $context = stream_context_create($opts); $html = file_get_html($item_url, false, $context);
上記のようにfile_get_htmlのパラメータをセットしてあげればOKです。
くれぐれも悪いことに使わないように!
HTTP::Requestなんかでヘッダーをいぢることでも出来るようですが、Simple HTML DOM Parserの場合はこれだけでOKのようですね。