Php 我们如何清理Google搜索URL';s列表,由DOM使用
我们正在进行一个与谷歌相关的项目,其中我们需要一个来自Google.com的搜索URL列表。请看我们的代码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
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;
}
}