我们正在开展与Google相关的项目之一,其中我们需要一个来自Google.com的搜索网址列表。请看我们的代码。
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个搜索结果,而没有添加Google的其他参数,例如此http://stackoverflow.com/users/login
已清除的网址
被修改
在本案例中,在随机情况下,有时值会有一些真正的参数http://stackoverflow.com/users/login?checking=ok&tesing=working
,但如果我们分解URL,那么我们可以返回正确的参数。
的被修改
请帮我改进这个脚本。
谢谢
PPS
答案 0 :(得分: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
答案 1 :(得分: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;
}
}