0

Google に関連するプロジェクトの 1 つに取り組んでおり、Google.com からの検索 URL のリストが必要です。私たちのコードを見てください。

include('dom/simple_html_dom.php');
$html = "http://www.google.com/search?q=stackoverflow";
$doc = new DOMDocument();
$doc = new DOMDocument;
$doc->loadhtmlfile($html);
$tags = $doc->getElementsByTagName('a');

 foreach ($tags as $tag) {
        echo $tag->getAttribute('href')."<br>";
 }

Google 検索結果ページのすべての URL のリストを取得しています。下記参照....

/url?q=http://stackoverflow.com/users/login&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CB8QqwMoADAA&usg=AFQjCNG2OZyIKUhw3qJpqiEgscmvrCRoYw
/url?q=http://stackoverflow.com/questions/tagged/android&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CCUQqwMoAzAA&usg=AFQjCNFqJTvfXN8zUDwS_1jYs4xt5w0NJA
/url?q=http://careers.stackoverflow.com/&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CCEQqwMoATAA&usg=AFQjCNEt6onx0tAMTtPB0Qzx0mJhnabQ5w
/url?q=http://blog.stackoverflow.com/&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CCcQqwMoBDAA&usg=AFQjCNF674QxjxMjvwaLRXTN5qcjHNPQ9Q

http://stackoverflow.com/users/login上位 10 件の検索結果のみが必要です。このクリーンな URLのように、Google に追加された追加のパラメーターは必要ありません。

編集 この場合、ランダムなケースでは、値に本物のパラメーターhttp://stackoverflow.com/users/login?checking=ok&tesing=workingが含まれることがありますが、URL を分解すると、正しいパラメーターを返すことができます。 編集済み

このスクリプトをより良くするために私を助けてください。

ありがとう

PPS

4

2 に答える 2

0

それは次のように単純かもしれません。

$url = explode('&sa=','/url?q=http://stackoverflow.com/users/login&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CB8QqwMoADAA&usg=AFQjCNG2OZyIKUhw3qJpqiEgscmvrCRoYw');

$cleaned = str_replace('/url?q=','',$p[0]);
print($cleaned);

しかし、誰かがそれを行うためのよりクリーンな方法を持っているかもしれません。

例:

$url = explode('&sa=','/url?q=http://stackoverflow.com/users/login?checking=ok&tesing=working&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CB8QqwMoADAA&usg=AFQjCNG2OZyIKUhw3qJpqiEgscmvrCRoYw',2);


$cleaned = str_replace('/url?q=','',$url[0]);
print($cleaned);

戻り値http://stackoverflow.com/users/login?checking=ok&tesing=working

于 2012-09-17T09:57:08.700 に答える
0

次のように繰り返し処理するときに、URLを解析できます。

foreach ($tags as $tag) {
    $arrHref=parse_url($tag->getAttribute('href'));
    $yourNewLink=$arrHref['scheme'].$arrHref['host'].$arrHref['path']
    echo $yourNewLink;
}

また、必要に応じて、 breakを使用してループから抜け出すことができます。

$loopLimit=10;
$curCount=0;
foreach ($tags as $tag) 
{
    $arrHref=parse_url($tag->getAttribute('href'));
    $yourNewLink=$arrHref['scheme'].$arrHref['host'].$arrHref['path']
    echo $yourNewLink;
    $curCount++;
    if($curCount>$LoopLimit)
    {
        break;
    }
}
于 2012-09-17T09:57:43.790 に答える