【PHP】yahooやgoogleの検索順位を取得したい場合はcurlをこう書く

yahooやgoogleの検索順位を取得したくても、普通にPHPからcurlで取ろうとしても失敗します。

少し工夫が必要です。下記のようにすれば私の環境ではyahooやgoogleの検索ページから情報が取得できました。

function curl_result($url,$post_data=false){
//サイトから情報を取得します。
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL,$url);
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
 
curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0' );

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_COOKIEJAR,      'cookie');
curl_setopt($ch,CURLOPT_COOKIEFILE,     'tmp');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, TRUE);

if($post){
  curl_setopt($ch,CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
}
 
$result = curl_exec( $ch );
curl_close( $ch );

if(isset($result) && $result!="" ){
  $result = str_replace(array("\r", "\n"), '', $result); // スクレイピングする際に改行が入ると邪魔だったので、改行を削除しました。改行を保持したい場合にはこの一行を消してください。
  return $result;
}else{
  return false;
}
//取得できればソースコードが返り、できなければfalseが返ります。
}

あとは取得してきたresultを元に加工すれば検索順位の取得が完了です。

※ついでに$post_data=array( ‘q’ => ‘POSTで送信したいデータ’ );とすればPOSTでもデータを送信できるようにしてみました。ちょっと便利かな。

コメント

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
タイトルとURLをコピーしました