0

我们正在进行一项与 Google 相关的项目,其中我们需要来自 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

我们只需要前 10 个搜索结果,没有添加 Google 的其他参数,例如这个http://stackoverflow.com/users/login清理过的 URL

编辑 在另一种情况下,在随机情况下,有时值具有一些真正的参数http://stackoverflow.com/users/login?checking=ok&tesing=working,但如果我们分解 URL,那么我们可以返回正确的参数。 已编辑

请帮助我使这个脚本更好。

谢谢

聚苯乙烯

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 回答