他のサイトのHTMLを自分のサイト内に表示する方法が知りたいです。


やりたい事
ヤフーなどの検索結果(件数のみ)を取得して自分のサイトに表示したいと考えています。 この場合、相手のサイトのHTMLを取得して該当する件数を抜き出すという考え方でいいのでしょうか? また、このような事は可能でしょうか? 可能ならどのような技術を必要としますか?おすすめなやり方などアドバイスお願いします。

回答の条件
  • 1人5回まで
  • 登録:2007/01/20 12:11:07
  • 終了:2007/01/25 16:56:08

ベストアンサー

id:Asuca No.3

Asuca回答回数281ベストアンサー獲得回数42007/01/20 18:17:29

ポイント50pt

たとえばYAHOO検索結果の件数を取得する場合

検索するキーワードを&keyとしてGETかPOSTして

$key = $_GET['key'];

$url = "http://search.yahoo.co.jp/search?p=$key";

$contents .= file_get_contents($url);

$contents = mb_convert_encoding($contents,"EUC-JP","auto");

preg_match("/ \/ .*strong>/", $contents, $res);

$res[0] = str_replace("約","",$res[0]);

$res[0] = str_replace("","",$res[0]);

$res[0] = str_replace(" / ","",$res[0]);

echo $res[0];

?>

こんな感じで件数が取得できます

mb_convert_encoding は自サイトにより必要ないかもしれないしS-JISかもしれない

どこを抜き出し(preg_match)変更(str_replace)するかは上記の応用です。

通常検索結果はAPIを使うのが推奨されます

検索結果を加工するのは規約に反するかもしれません

自己責任で、、(^^

id:mayo33

Asucaさん 返事が遅くなりすいません。

ズバリなアドバイスありがとうございました。早速試してみました。 教えていただいた通り検索結果を取得できました。

一つ気になる点は時々リンク先の件数と表示される件数の数字が異なることです。 これはどういう現象なんでしょうか? あまり気にする事ではないのかもしれませんが。

あと、googleの検索結果を取得する場合はpreg_matchの部分を変更すればいいのですね? 勉強することが多そうですががんばります。 

どうもありがとうございました!

2007/01/22 16:28:19

その他の回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/01/20 12:25:55

ポイント10pt

Yahoo! の場合は API が公開されているので JavaScript 等を使用して結果を得る事が出来ます。

http://developer.yahoo.co.jp/


このようにウェブ API が公開されている場合は大抵 JavaScript で扱えますが、API が用意されていない場合は Perl や PHP 等で自分で処理するしかありません。

id:mayo33

b-windさんありがとうございます。

アドバイスいただいたサイト拝見しました。

用意されていないサイトも取得したいと考えています。 

>PHPでしょりするしかありません。

これに対するヒントになるサイトやアドバイスを教えてください。

2007/01/20 14:24:22
id:falcosapiens No.2

falcosapiens回答回数126ベストアンサー獲得回数132007/01/20 12:26:56

ポイント10pt

多くの検索エンジンがAPIを公開しており

htmlを経由するまでもなく

直接にデータベースから結果を得ることができるようになっています。

http://e-words.jp/w/API.html

GoogleのAPIについての情報がもっとも多いと思われるので

このあたりから始められると良いでしょう。

http://www.asahi-net.or.jp/~cs8k-cyu/gglwebapi/index.html

id:mayo33

falcosapiensさんありがとうございます。

アドバイスいただいたサイト参考にさせていただきます。

上の回答に返信したようにAPIを公開していないサイトの結果も取得したいと考えています。

それならやはりHTMLを取得する方法になるのでしょうか? 自分では以下のサイトのようにHTMLを取得してから何かを変更するのかなっと勝手に考えているのですが。 的外れでしょうか?

http://openlab.ring.gr.jp/k16/htmllint/htmllint.html

2007/01/20 14:24:25
id:Asuca No.3

Asuca回答回数281ベストアンサー獲得回数42007/01/20 18:17:29ここでベストアンサー

ポイント50pt

たとえばYAHOO検索結果の件数を取得する場合

検索するキーワードを&keyとしてGETかPOSTして

$key = $_GET['key'];

$url = "http://search.yahoo.co.jp/search?p=$key";

$contents .= file_get_contents($url);

$contents = mb_convert_encoding($contents,"EUC-JP","auto");

preg_match("/ \/ .*strong>/", $contents, $res);

$res[0] = str_replace("約","",$res[0]);

$res[0] = str_replace("","",$res[0]);

$res[0] = str_replace(" / ","",$res[0]);

echo $res[0];

?>

こんな感じで件数が取得できます

mb_convert_encoding は自サイトにより必要ないかもしれないしS-JISかもしれない

どこを抜き出し(preg_match)変更(str_replace)するかは上記の応用です。

通常検索結果はAPIを使うのが推奨されます

検索結果を加工するのは規約に反するかもしれません

自己責任で、、(^^

id:mayo33

Asucaさん 返事が遅くなりすいません。

ズバリなアドバイスありがとうございました。早速試してみました。 教えていただいた通り検索結果を取得できました。

一つ気になる点は時々リンク先の件数と表示される件数の数字が異なることです。 これはどういう現象なんでしょうか? あまり気にする事ではないのかもしれませんが。

あと、googleの検索結果を取得する場合はpreg_matchの部分を変更すればいいのですね? 勉強することが多そうですががんばります。 

どうもありがとうございました!

2007/01/22 16:28:19
id:Asuca No.4

Asuca回答回数281ベストアンサー獲得回数42007/01/23 08:54:51

ポイント50pt

>一つ気になる点は時々リンク先の件数と表示される件数の数字が異なることです

検索のタイミングにより変わることがあります(特にGoogle)

これはサーバがいくつにも分かれているからです。

preg_matchで抜き出す部分は結果ページのソースを見て判断してください

ちなみにGoogleは 

$key = $_GET['key'];

$url = "http://www.google.co.jp/search?hl=ja&q='$key'";

$contents .= file_get_contents($url);

$contents = mb_convert_encoding($contents,"EUC-JP","auto");

preg_match("/ .*件中/", $contents, $res);

$res[0] = str_replace("件中","",$res[0]);

$res[0] = str_replace("","",$res[0]);

$res[0] = str_replace(" ","",$res[0]);

echo $res[0];

?>

これでいけると思います

id:mayo33

Asucaさんこんにちは。 本当にご親切な回答ありがとうございました。

現在の状況を報告します。

今、同じページで7つくらいの結果を取得しようとしています。 思い教えていただきましたpreg_matchを使い取得には成功しました。 しかしながら表示されるまでが遅い^^; これは仕方のない事でしょうか? もう少し早く表示する方法がないか調べてみます。 ありがとうございました。

2007/01/24 17:37:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません