Php 我们如何清理Google搜索URL';s列表,由DOM使用

Php 我们如何清理Google搜索URL';s列表,由DOM使用,php,url,dom,Php,Url,Dom,我们正在进行一个与谷歌相关的项目,其中我们需要一个来自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->getElem

我们正在进行一个与谷歌相关的项目,其中我们需要一个来自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>";
 }
我们只需要排名前十的搜索结果,不需要谷歌添加的其他参数,如
http://stackoverflow.com/users/login
已清除的URL

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

请帮助我使这个脚本更好

谢谢


PPS

它可以简单到:

$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

您可以像这样迭代它们:

foreach ($tags as $tag) {
    $arrHref=parse_url($tag->getAttribute('href'));
    $yourNewLink=$arrHref['scheme'].$arrHref['host'].$arrHref['path']
    echo $yourNewLink;
}
您可以在需要时使用退出循环:

$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;
    }
}

如果存在参数,则不会给出正确的结果。在本例中:-/url?q=。。。那么它就不会给出正确的值。我现在已经编辑了它,第一个google参数总是&sa=(据我所知),所以它应该在sa=上爆炸,这意味着所有真正的参数仍然存在
$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;
    }
}