Tutorial
この記事の読了時間:約2分41秒
例えば、名詞や単語のリストが山ほどあって、それぞれの代表的なサイトにリンクさせたいんだけど、それらのURLをひとつずつ手作業で調べるのは現実的じゃない場合。
つまるところ、あるキーワードに対して「Googleの検索結果で1位のサイトのURL」を取得してほにゃららしたいっ!って時の方法 by PHPを、メモがてらにご紹介♪
ただしこの方法は検索サイト側の利用規約に対してグレーな使い方ですので、クライアントワークでの使用を控え趣味程度に収めるなど、ご利用は自己責任にてお願い致します。
んでは、いきまっかー!
まずはじめに、処理の流れとしてはフツーに検索結果をスクレイピングするだけなんですが、素直にGoogleからfile_get_contents()とかで直接取ろうとすると、Google側からハネられたり通ったり、挙動が安定しません。
では、どうすれば。。。
それではさっそく、下記コードをご鑑賞下さい。
$target_str = '文字化け解読'; $url = 'http://search.yahoo.co.jp/search?p='.urlencode($str); $data = mb_convert_encoding(file_get_contents($url), "utf8", "auto"); $data = str_replace(array("\r\n","\r","\n"), '', $data); $data = explode('<div id="web">', $data); $data = str_replace(array('<b>', '</b>'), '', $data[1]); preg_match("/<li><a href=\"(.+?)\">(.+?)<\/a>/", $data, $match); $top_site_url = $match[1]; echo $top_site_url; // 結果 http://lab.kiki-verb.com/mojibakeratta/
さて皆さん、2行目をよーくご確認下さい。。。
そう!これこそ最大のポイント、「Yahoo!JAPANから引っ張ってくる」ってトコ!
現在Yahoo!JAPANは検索エンジンをGoogleから借りているため、結果は同じ。でもこっちはハネない!素敵!抱いて!HOLD ON ME!もいちど好きって(ry
迂回策的にYahoo!から検索結果の全体を取得 → 1位の部分の全体を抽出 → URLの部分を抽出 って流れで、あとはお好きにあーだーこーだしちゃってください☆
関連する記事
同じカテゴリーの記事
田中 より:
2017/06/15 12:14 AM
はじめまして!検索1位の画像URLを取りたいのですが可能でしょうか!?