0

Google にクエリを実行して、特定の Web サイトのバックリンクの数を取得するこのコードがあります。作成中の SEO レポート ジェネレーターで使用したいと考えています。問題は、preg_match を正しく動作させることができないことです。助けが必要。

<?php
    $q = "http://zetcode.com/";
    $url = "http://www.google.com/search?hl=en&safe=off&q=link%3A".urlencode($q)."&btnG=Search";
    $content = file_get_contents($url);
    $pattern = "/(<div id=\"resultStats\">About ([0-9,]+) results<nobr>)|(<div id=\"resultStats\">([0-9,]+) results<nobr>)/";
    preg_match($pattern, $content, $out);
    $googlelinks = $out[count($out)-1];
    var_dump($out);
?>

HTML で取得したコンテンツの例を次に示します: http://pastebin.com/EMaJmCkJ

4

2 に答える 2

0

代わりに次の検索 URL を使用してください: https://www.google.co.in/search?output=search&sclient=psy-ab&q=link:facebook.com

この url は、yo のように正規表現で簡単に解析できる html のみを返します。Google は、javascript をサポートしていないブラウザにこの URL を使用します (ブラウザで JavaScript を無効にして検索してみてください)。通常の URL (使用したもの) は、複雑な外観の JavaScript を返し、ページに表示される HTML を作成します。

<?php
    $q = "http://zetcode.com/";
    $url = "https://www.google.co.in/search?output=search&sclient=psy-ab&q=link%3A".urlencode($q);
    $content = file_get_contents($url);
    $pattern = "/(<div id=\"resultStats\">About ([0-9,]+) results)|(<div id=\"resultStats\">([0-9,]+) results)/";
    preg_match($pattern, $content, $out);
    $googlelinks = $out[count($out)-1];
    var_dump($out);
?>
于 2013-08-07T05:55:21.237 に答える
0

パターンを確認してください..変更する必要があります..resultStats内にもう1つのdivがあります..正しいパターンを指定すると、出力が表示されます..もう1つ、file_get_Contents($ url)をデコードする必要はありません.remove base_64decode 関数を試してみてください。

于 2013-08-07T05:34:05.253 に答える