Page Ranking bei bestimmten Keyword aus Suchmaschinen auslesen ?

Du hättest wie in dem Script auch über die englische Seite suchen sollen ^^ Dort ist es nicht auf Platz1:
http://www.google.com/search?num=100&hl=en&lr=&q=tutorials&btnG=Search

Aber es stimmt leider trotzdem nicht ;(
Na wenigstens läuft es schonmal an. Sind wohl noch Fehler drin. Und es ist ja auch nicht mein Script. Habe nur die google-Seitige Änderung der P-Tags auf Div-Tags angepasst.

Wo liegt denn der Fehler ? Ich hab jetzt schon ne Stunde rumprobiert ;(

Im Prinzip geht es ja darum in der Datei zu schauen ob zwischen String "<div class=g " und wieder diesem String die gesuchte Domain enthalten ist. Und wenn ja die Position festzuhalten. Und dann eben die nächsten Seite mit den nächsten 100 Ranks durchzugehen bis eben die Max Pages erfüllt ist die man angibt, Aber irgendwie will das nicht so. Vielleicht findet ihr ja den Fehler !
 
Zuletzt bearbeitet:
Ich hab mal ein Script geschrieben das sowas macht. Es ermittelt zwar nicht den Google PageRank sondern auf welcher Seite angegebene Link bei Suche mit angegebenen Begriffen zu finden ist.
Es basiert auf meiner Klasse HTTPConnection, vielleicht ist es ja was fuer Dich.
PHP:
<html>
<head>
<title>Link-Check</title>
</head>
<body>
<?php
require_once("../classes/httpconnection.class.php");
function google($keywords,$url,$maxpages,$locale="int")
{
	if ($locale=="de")
		{
			$http=new httpconnection("www.google.de",80,false,"Mozilla/5.0");
		}
	else
		{
			$http=new httpconnection("www.google.com",80,false,"Mozilla/5.0");
		}
	$x=0;
	while (($x<$maxpages) && ($found==false))
		{
			$start=$x*10;
			$data=$http->get("search","q=".$keywords."&start=".$start);
			if ((strpos($data['body'],'//'.$url.'/')!=false) || (strpos($data['body'],'//'.$url.' ')!=false))
				{
					$found=true;
				}
			else
				{
					$found=false;
				}
			$x++;
		}
	$data=$http->get("search","q=link:http://".$url);
	if ($locale=="de")
		{
			$nomatchstring="Es wurden keine";
		}
	else
		{
			$nomatchstring="did not match";
		}
	if (strpos($data['body'],$nomatchstring)!=false)
		{
			$backlinks=0;
		}
	else
		{
			if ($locale=="de")
				{
					$startpos=strpos($data['body'],"von",strpos($data['body'],"Ergebnisse"))+4;
					$endpos=strpos($data['body'],",",$startpos);
					$aboutword="ungefähr";
				}
			else
				{
					$startpos=strpos($data['body'],"of",strpos($data['body'],"Results"))+3;
					$endpos=strpos($data['body'],"linking",$startpos)-1;
					$aboutword="about";
				}
			$backlinks=substr($data['body'],$startpos,$endpos-$startpos);
			if (substr($backlinks,0,1)==substr($aboutword,0,1))
				{
					$backlinks=substr($backlinks,3+strlen($aboutword)+1,-4);
				}
			else
				{
					$backlinks=substr($backlinks,3,-4);
				}
		}
	unset($http);
	echo '<b>Google:</b><br>';
	if ($found==true)
		{
			echo $url.' was found on page '.$x.'<br>';
		}
	else
		{
			echo $url.' was not found on the first '.$x.' Pages of results<br>';
		}
	echo 'Backlinks to '.$url.': '.$backlinks;
	echo '<hr>';
}

function altavista($keywords,$url,$maxpages,$locale="int")
{
	if ($locale=="de")
		{
			$http=new httpconnection("de.altavista.com",80,false,"Mozilla/5.0");
		}
	else
		{
			$http=new httpconnection("www.altavista.com",80,false,"Mozilla/5.0");
		}
	$x=0;
	while (($x<$maxpages) && ($found==false))
		{
			$start=$x*10;
			$data=$http->get("web/results","q=".$keywords."&stq=".$start);
			if ((strpos($data['body'],'//'.$url.'/')!=false) || (strpos($data['body'],'//'.$url.' ')!=false))
				{
					$found=true;
				}
			else
				{
					$found=false;
				}
			$x++;
		}
	$data=$http->get("web/results","q=link:http://".$url);
	if ($locale=="de")
		{
			$nomatchstring="Es wurden";
		}
	else
		{
			$nomatchstring="We found";
		}
	if (strpos($data['body'],$nomatchstring)!=false)
		{
			$backlinks=0;
		}
	else
		{
			if ($locale=="de")
				{
					$startpos=strpos($data['body'],"AltaVista fand")+15;
					$endpos=strpos($data['body'],"Ergebnisse",$startpos)-1;
				}
			else
				{
					$startpos=strpos($data['body'],"AltaVista found")+16;
					$endpos=strpos($data['body'],"results",$startpos)-1;
				}
			$backlinks=substr($data['body'],$startpos,$endpos-$startpos);
		}
	unset($http);
	echo '<b>Altavista:</b><br>';
	if ($found==true)
		{
			echo $url.' was found on page '.$x.'<br>';
		}
	else
		{
			echo $url.' was not found on the first '.$x.' Pages of results<br>';
		}
	echo 'Backlinks to '.$url.': '.$backlinks;
	echo '<hr>';
}

function yahoo($keywords,$url,$maxpages,$locale="int")
{
	if ($locale=="de")
		{
			$http=new httpconnection("de.search.yahoo.com",80,false,"Mozilla/5.0");
		}
	else
		{
			$http=new httpconnection("search.yahoo.com",80,false,"Mozilla/5.0");
		}
	$x=0;
	while (($x<$maxpages) && ($found==false))
		{
			$start=$x*10+1;
			$data=$http->get("search","p=".$keywords."&b=".$start);
			if ((strpos($data['body'],'%2F%2F'.$url.'%2F')!=false) || (strpos($data['body'],'%F%F'.$url.' ')!=false))
				{
					$found=true;
				}
			else
				{
					$found=false;
				}
			$x++;
		}
	$data=$http->get("search","p=link:http://".$url);
	if ($locale=="de")
		{
			$nomatchstring="Es wurden keine";
		}
	else
		{
			$nomatchstring="did not find";
		}
	if (strpos($data['body'],$nomatchstring)!=false)
		{
			$backlinks=0;
		}
	else
		{
			if ($locale=="de")
				{
					$startpos=strpos($data['body'],"von",strpos($data['body'],"Ergebnisse <",$startpos))+4;
					$endpos=strpos($data['body'],"f".chr(252)."r",$startpos)-1;
					$aboutword="ungef".chr(228)."hr";
				}
			else
				{
					$startpos=strpos($data['body'],"of",strpos($data['body'],"Results <",$startpos))+3;
					$endpos=strpos($data['body'],"for",$startpos)-1;
					$aboutword="about";
				}
			$backlinks=substr($data['body'],$startpos,$endpos-$startpos);
			if (substr($backlinks,0,1)==substr($aboutword,0,1))
				{
					$backlinks=substr($backlinks,8+strlen($aboutword)+1,-9);
				}
			else
				{
					$backlinks=substr($backlinks,8,-9);
				}
		}
	unset($http);
	echo '<b>Yahoo:</b><br>';
	if ($found==true)
		{
			echo $url.' was found on page '.$x.'<br>';
		}
	else
		{
			echo $url.' was not found on the first '.$x.' Pages of results<br>';
		}
	echo 'Backlinks to '.$url.': '.$backlinks;
	echo '<hr>';
}

function msn($keywords,$url,$maxpages,$locale="int")
{
	if ($locale=="de")
		{
			$http=new httpconnection("search.msn.de",80,false,"Mozilla/5.0");
		}
	else
		{
			$http=new httpconnection("search.msn.com",80,false,"Mozilla/5.0");
		}
	$x=0;
	while (($x<$maxpages) && ($found==false))
		{
			$start=$x*10+1;
			$data=$http->get("results.aspx","q=".$keywords."&first=".$start);
			if ((strpos($data['body'],'//'.$url.'/')!=false) || (strpos($data['body'],'//'.$url.' ')!=false))
				{
					$found=true;
				}
			else
				{
					$found=false;
				}
			$x++;
		}
	$data=$http->get("results.aspx","q=link:http://".$url);
	if ($locale=="de")
		{
			$nomatchstring="Es wurden";
		}
	else
		{
			$nomatchstring="We found";
		}
	if (strpos($data['body'],$nomatchstring)!=false)
		{
			$backlinks=0;
		}
	else
		{
			if ($locale=="de")
				{
					$startpos=strpos($data['body'],"von",strpos($data['body'],"Webergebnisse"))+4;
					$endpos=strpos($data['body'],"Ergebnissen",$startpos)-1;
				}
			else
				{
					$startpos=strpos($data['body'],"of",strpos($data['body'],"Web Results"))+3;
					$endpos=strpos($data['body'],"results",$startpos)-1;
				}
			$backlinks=substr($data['body'],$startpos,$endpos-$startpos);
		}
	unset($http);
	echo '<b>MSN:</b><br>';
	if ($found==true)
		{
			echo $url.' was found on page '.$x.'<br>';
		}
	else
		{
			echo $url.' was not found on the first '.$x.' Pages of results<br>';
		}
	echo 'Backlinks to '.$url.': '.$backlinks;
	echo '<hr>';
}

function dmoz($keywords,$url,$maxpages)
{
	$http=new httpconnection("search.dmoz.org",80,false,"Mozilla/5.0");
	$x=0;
	while (($x<$maxpages) && ($found==false))
		{
			$start=$x*20+1;
			$data=$http->get("cgi-bin/search","search=".$keywords."&start=".$start);
			if ((strpos($data['body'],'//'.$url.'/')!=false) || (strpos($data['body'],'//'.$url.' ')!=false))
				{
					$found=true;
				}
			else
				{
					$found=false;
				}
			$x++;
		}
	unset($http);
	echo '<b>Open Directory Project:</b><br>';
	if ($found==true)
		{
			echo $url.' was found on page '.$x.'<br>';
		}
	else
		{
			echo $url.' was not found on the first '.$x.' Pages of results<br>';
		}
	echo 'Backlinks to '.$url.': not available';
	echo '<hr>';
}

if ((isset($_POST['check'])) && (!empty($_POST['keywords'])) && (!empty($_POST['url'])))
	{
		echo '<b>Keywords:</b> '.$_POST['keywords'].'<br><br>';
		flush();
		if (isset($_POST['google']))
			{
				google(urlencode($_POST['keywords']),$_POST['url'],$_POST['maxpages'],$_POST['location']);
				flush();
			}
		if (isset($_POST['altavista']))
			{
				altavista(urlencode($_POST['keywords']),$_POST['url'],$_POST['maxpages'],$_POST['location']);
				flush();
			}
		if (isset($_POST['yahoo']))
			{
				yahoo(urlencode($_POST['keywords']),$_POST['url'],$_POST['maxpages'],$_POST['location']);
				flush();
			}
		if (isset($_POST['msn']))
			{
				msn(urlencode($_POST['keywords']),$_POST['url'],$_POST['maxpages'],$_POST['location']);
				flush();
			}
		if (isset($_POST['dmoz']))
			{
				dmoz(urlencode($_POST['keywords']),$_POST['url'],$_POST['maxpages']);
				flush();
			}
	}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr><td>Keywords:</td><td>
<?php
echo '<input type="text" name="keywords"';
if (isset($_POST['keywords']))
	{
		echo ' value="'.$_POST['keywords'].'"';
	}
echo '>';
?>
</td></tr>
<tr><td>URL:</td><td>
<?php
echo '<input type="text" name="url"';
if (isset($_POST['url']))
	{
		echo ' value="'.$_POST['url'].'"';
	}
echo '>';
?>
</td></tr>
<tr><td>Max pages:</td><td><select name="maxpages">
<?php
for ($x=0;$x<10;$x++)
	{
		echo '<option value="'.($x+1).'"';
		if (((isset($_POST['maxpages'])) && ($_POST['maxpages']==$x+1)) || ((!isset($_POST['maxpages'])) && ($x==4)))
			{
				echo ' selected';
			}
		echo '>'.($x+1).'</option>';
	}
?>
</select></td></tr>
<?php
echo '<tr>';
echo '<td>Google:</td>';
echo '<td><input type="checkbox" name="google"';
if (isset($_POST['google']))
	{
		echo ' checked';
	}
echo '></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Altavista:</td>';
echo '<td><input type="checkbox" name="altavista"';
if (isset($_POST['altavista']))
	{
		echo ' checked';
	}
echo '></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Yahoo:</td>';
echo '<td><input type="checkbox" name="yahoo"';
if (isset($_POST['yahoo']))
	{
		echo ' checked';
	}
echo '></td>';
echo '</tr>';
echo '<tr>';
echo '<td>MSN:</td>';
echo '<td><input type="checkbox" name="msn"';
if (isset($_POST['msn']))
	{
		echo ' checked';
	}
echo '></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Open Directory Project:</td>';
echo '<td><input type="checkbox" name="dmoz"';
if (isset($_POST['dmoz']))
	{
		echo 'checked';
	}
echo '></td>';
echo '</tr>';
?>
<tr><td>Search Location:</td><td><select name="location">
<?php
echo '<option value="int"';
if (((isset($_POST['location'])) && ($_POST['location']=="int")) || (!isset($_POST['location'])))
	{
		echo ' selected';
	}
echo '>International</option>';
echo '<option value="de"';
if ((isset($_POST['location'])) && ($_POST['location']=="de"))
	{
		echo ' selected';
	}
echo '>Germany</option>';
?>
</select></td></tr>
</table>
<input type="submit" name="check" value="Check">
</form>
</body>
</html>
 
ES LÄUFT ;D

Wenn ihr noch Fehler findet bitte melden !!

PHP:
<?php

function Google_Search ( $keyword, $domain_name, $max_pages ) {
    // $keyword = keyword to search for
    // $domain_name = domain name to search for
    // $max_pages = the number of pages to search (100 results per page)

    // construct google URL
    $req = "http://www.google.com/search?num=100&hl=de&lr=&q="
        .urlencode($keyword)
        ."&btnG=Search";

    // loop throught the search engine pages
    for($f=0;$f<$max_pages;$f++){
    
        // open a connection to google and get the contents
        if( !( $handle = fopen($req, "rb") ) ) {
            $contents = 'Unable to Connect';
        } else {
            $contents='';
            while( !feof($handle) ) {
                $contents.=fread( $handle, 8192 );
            }
            fclose($handle);
        }

        // find the beginning of the results
        $contents = substr($contents, strpos($contents,"<div class=g>")-100);
        
       
    
        // search for your domain and calculate the approximate results
         if(($contPos=strpos($contents,$domain_name))>100) {
            $dn_position=substr_count(substr($contents,1,$contPos),"div class=g");
            return (($f*100)+$dn_position);
            
         }

        // create the next google URL
        $req = "http://www.google.com/search?q=".urlencode($keyword)
            ."&num=100&hl=de&lr=&start="
            .($f+1)."00&sa=N";
    
    }

    return -1;   // search failed, domain name not found
}  

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
<title></title>
<link rel="stylesheet" type="text/css" href="my.css">
</head>

<body>

<form action="<? echo $_SERVER['PHP_SELF']; ?>?action=check" method="POST"> 

<div style="float:left;">Keyword:<br>Domain:<br>Pages:</div>

<div style="float:left;">
<input type="text" name="keyword" size="30"><br>
<input type="text" name="domain_name" size="30"><br>
<input type="text" name="max_pages" size="10"><br>
<input type="submit" value="Check">
</div>

</form>
<br clear="both">
<br clear="both">
<div>
<?

if ($_GET['action']=="check") {
$ausgabe = Google_Search($_POST['keyword'],$_POST['domain_name'],$_POST['max_pages']);

echo $ausgabe;  
   
}

?>
</div>
 
</body>

</html>
 
Zuletzt bearbeitet:
Ein Fehler ist es jetzt nicht, aber dennoch kann es zu einem Problem werden.
fopen() kann nur mit URLs genutzt werden wenn allow_url_fopen=on ist, und eben dies ist nicht bei jedem Hoster der Fall da dadurch XSS-Attacken beguenstigt werden wenn Scripts nicht sorgfaeltig geschrieben sind.
 
Und wenn ich es auf Basis deiner HTTP Connection Class umschreiben würde, dann wäre dieses Problem umgangen ?
 
Ja, denn diese setzt auf fsockopen() welches wahrscheinlich bei mehr Hostern nutzbar sein sollte als dass man allow_url_fopen=on, oder gar die CURL-Extension, vorfindet.
 
Zurück