2012-09-17 27 views
0

我們正在開發一項與Google相關的項目,其中我們需要Google.com中的搜索網址列表。請看我們的代碼。我們如何清理Google搜索網址的列表,使用DOM

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?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個搜索結果,與加入谷歌沒有額外的參數,這樣的清洗http://stackoverflow.com/users/login URL

編輯 在花葯這種情況下,隨機的情況下,有時這些值有一些真正的參數http://stackoverflow.com/users/login?checking=ok&tesing=working,但如果我們爆炸的URL,那麼我們可以返回正確的參數。 編輯

請幫我使這個腳本更好。

由於

PPS

回答

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

+0

如果會有參數,那麼它不會給出正確的結果。在這種情況下: - /url?q=http://stackoverflow.com/users/login?testingbypps=genuineparameters&sec_parameter=genuine&sa=U&ei=c_FWUPyTEoHIrQfsiYB4&ved=0CB8QqwMoADAA&usg=AFQjCNG2OZyIKUhw3qJpqiEgscmvrCRoYw ...那麼它不會給出正確的價值。 – PPS

+0

我現在編輯它,第一個谷歌參數總是&sa =(據我所知),所以這應該爆炸sa =這意味着你所有的真正參數仍然存在 –

0

您可以parse the 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; 
    } 
}