人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ある特定のサイトでスクレイピングできないのですが、どうすれば出来ますか?
http://www.usamimi.info/~ryouchi/scraping/04.html
このサイトを参考にいろんなサイトのスクレイピングを試していますが
例えば
http://www.himawari.metro.tokyo.jp/qq/qq13tomnlt.asp
のようなサイトですと、スクレイピングができず困っています。

上記サイトは、検索結果等のURLをブックマークして
次に呼び出してもパラメーターエラーになり
毎回トップページからたどっていかないとダメなのですが
こういったサイトについては、どのような方法でスクレイピングを行えば良いのでしょうか?
proxy.phpの使い方で解決するのでしょうか?
アドバイス頂けると嬉しいです。よろしくお願いいたします。

●質問者: yotte
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

「スクレイピングができない」と書いてるのは、検索結果のページなんかですよね。


http のリクエストは、大雑把に言うと GET と POST の二つがあります。
GET は、検索のキーワードなどのようなパラメータを、URL の一部として指定するタイプ。
URL の後半が ?xxx=aaa&yyy=bbb&zzz=ccc みたいになってるやつです。

POST は、パラメータを URL の一部では無く、別のところ(リクエストのボディ)で指定するタイプ。
URL だけを見ても、どのようなパラメータを渡しているか分かりません。

質問であげられたサイトは、POST でパラメータを渡すタイプです。

参考にしているページにある proxy.php を見ると、POST にも対応しているようです。

<?php
 ...
function http_request($url,$method='GET',$headers='',$post=array(),
 $redirect_max=HTTP_REQUEST_URL_REDIRECT_MAX)
{
  ...

二番目のパラメータ $method で、デフォルトの値を GET にしているところと、四番目の $post で渡す配列のところを適切に指定してあげる必要があります。

<?php
 ...
function get_html($url){ 
 $rdata = http_request($url); // ★ココ!
 $data = mb_convert_encoding($rdata['data'],"utf-8","auto"); 
 return ($data); 
} 

と、なっているところを、以下のような感じにしてあげる必要があります。

<?php
 ...
function get_html($url){ 
 $param = array(
 "xxx" => "aaa",
 "yyy" => "bbb",
 "zzz" => "ccc"
 );
 $rdata = http_request($url, 'POST', '', $param); // ★ココ!
 $data = mb_convert_encoding($rdata['data'],"utf-8","auto"); 
 return ($data); 
} 

どんなパラメータを、どのように設定してあげる必要があるかは、対象のページによって変わるので、解析する必要があります。


2 ● oil999
●100ポイント

「スクレイピングができず困っています」には、POSTでパラメータを渡します。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ