以下の様ないくつかのサイトを纏めて検索するサイトの作り方(PHP実装のロジック方針)を教えてください。


http://findvid.net
http://kakakuh.com
http://wav.tv    ※アダルト系なので未成年・女性の方はご注意ください。

現在大学生です。学科とは関係なのですが、プログラミングに興味があり、ORACLE SILVERを取得しました。今度はアプリケーションやサイトを作りたくいろいろ参考になるサイトを見ておりましたが、上記のようなサイトの作り方が分からず困っています。

私が考えたやり方ですと
①それぞれのサイトに入って検索をする
②その検索結果のhtmlから必要な情報(動画のID等をぬく)
③抜いた情報を元に表示する

だと思ったのですが、それだと複数のページにまたがる結果を取得する際の挙動が分かりません。
(上記のサイトで検索結果2ページ目以降を表示する際には、再度対象の検索サイトに検索をかけに行く動きになっているのでしょうか?検索ヒットの総数も全体の件数を計算したうえで表示しているように見えます。)

かといってyoutube等のDBに直接クエリは投げられませんし、、、
一体どうやっているのか検討がつく方いらっしゃいましたら勉強の為にご教示下さい。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/06/19 02:20:04

回答1件)

id:yoneto164 No.1

回答回数813ベストアンサー獲得回数94

複数のサイトの検索結果をどうソートするかにもよるのですが、
例えばYouTubeの場合は再生回数の多い順にソートできるので、
「magic」の場合は、
https://www.youtube.com/results?search_sort=video_view_count&search_query=magic
となり、20件の検索結果が返されます。
以降のデータは、
https://www.youtube.com/results?search_sort=video_view_count&search_query=magic&page=2
というように「&page=2」や「&page=3」を付加すれば取得できます。
「&page=0」と「&page=1」は同じ結果で最初の20件が表示される仕組みです。

例えば3つのサイトを検索するとして、1ページ目が全て20件であった場合、
その60件のデータを全て集めて再生回数の多い順にソートします。
1ページに表示しようとする件数が20件であった場合はここまででOKです。

2ページ目以降が問題で、21件目から39件目までのソート結果に、
特定のサイトの20件目が表示されてしまっている場合、
その特定のサイトの21件目以降を取得し、追加してソートし直します。
そしてソート結果の21件目から40件目を表示します。

このように、足りなくなった可能性があればアクセスするという方法があります。

他4件のコメントを見る
id:shudoyui

ダミーのサイト等を経由してアクセスかけてるのかと思ってました・・・
仕組みに関しては大体理解出来ました。
実際に同じ様なサイトを作るかは分かりませんが、また何かありましたら宜しくお願い致します。勉強になりました!ありがとうございました。

2014/06/12 23:55:45
id:yoneto164

ダミーのサイトを経由しても解析されてしまえば同じことで、そのダミーのサイトからのアクセスを次々と制限されるでしょう。
もちろん刑事罰に問われることも今のところはないはずですが、
デジタルの世界なので隠すことは出来ません。
相手に悪意があろうと無かろうと、己のサイトを守ることも仕事のうちなのです。
またお会いできると楽しいですね。

2014/06/13 00:28:12

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

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

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

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

回答リクエストを送信したユーザーはいません