質問: 指定したキーワードでのyahooの検索結果で、自分のサイトが何位に表示されるかというSEO対策のプログラムを作成しています。 ``` http://search.yahoo.co.jp/search?p=キーワード&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt&n=50 ``` このURLをブラウザに直接入力すると、きちんと50位までの結果がブラウザに表示されるのですが、これを、 ``` file_get_contents("http://search.yahoo.co.jp/search?p=キーワード&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt&n=50"); ``` このようにして、PHPのfile_get_contentsで検索結果ページを取得しようとすると、何故か10位までしか検索結果が表示されません。 ブラウザに直接入力した時と、PHPのfile_get_contentsで取得した時では、結果が違うのは何故なのでしょう? また、このような場合、ブラウザに直接URLを入力した時と同じ結果のHTMLを取得するには、どうしたらいいのでしょう?
回答: いくつか確認ですが、ブラウザは、Yahooにログインしていたりしていますか? また、Yahoo の検索設定は、どうなっていますか? 表示件数や文字サイズ、言語設定などの検索設定は、Yahooにログインしている場合は、一度設定した値が引き継がれるみたいですが、ログインしていない場合は Cookieがあれば Cookieに設定されている条件、ない場合は、初期値が使われるようです。 検索結果の表示件数の初期値は、10件ですので、初期値が使われているのでしょう。 対応としては、HTTP/Request などを使って、Yahooにログインしてから、検索するようにするようなプログラムを書くことになると思います。