Autor Zpráva
jojo
Profil *
Dobrý den,
chtěl bych se zeptat jestli nevíte o zajímavém tutorialu jak vytvořit skript, pomocí které by šlo zjišťovat aktuální pozice klíčových slov pro určité webové stránky? Děkuji za jakékoli informace k této problematice.
Ernie
Profil *
Co třeba Google webmaster tools?
jojo
Profil *
Já bych si rád vyzkošel napsat něco vlastního. Jestli to vůbce jde. Jinak takových nástrojů je mraky web master tools, collabim atd.
Ernie
Profil *
Tak asi by se dalo hledat třeba googlem přes PHP a ve výsledcích najít tu hledanou stránku, ale nenapadá mě, k čemu je to dobré.
jojo
Profil *
Ano, mělo by to něco já píšete. Příklad: mám stránku auto.cz a potřebuji zjistit na jaké pozici je v googlu na klíčové slovo: auto. Zadám slovo do auto do googlu a stránka auto.cz na klíčové slovo auto je na 9 pozici. A tohle přesně bych si rád vyzkoušel napsat třeba pomocí php. zadám klíčové slovo, doménu, vyberu si vyhledávač a skript mi vyjede pozici daného slova.
Keeehi
Profil
jojo:
A kde je problém?
Zdrojový kód načtete třeba takto:
$html = file_get_contents("http://www.google.cz/search?lr=lang_cs&q=$klicove_slovo");
Pokud by to u jiných vyhledávačů nestačilo, tak použijete knihovnu cURL

A pak už v tom zdrojáku budete vyhledávat buď pomocí regulárních výrazů, nebo prohledávání DOMu.
jojo
Profil *
tohle by bylo ideální.

Potom by vlastně stačilo pomocí for cyklu prohledávat další stránky třeba do 100. Pokud nebylo nalezeno tak smůla.

"http://www.google.cz/search?lr=lang_cs&q=klicove_slovo#q=klicove_slovo&hl=cs&lr=lang_cs&tbs=lr:lang_1cs&prmd=ivns&ei=-Pe7Td7IJMzTsgbkybz3BQ&start="$aktualni_stranka"&sa=N&bav=on.2,or.r_gc.r_pw.&fp=553f3923f2efbb2a"

Keeehi
Profil
jojo:
V tom bude asi tak trochu problém. Ta proměnná je až za # a s tím řetězcem pracuje javascript. Doporučuji si javascript v prohlížeči vypnout a zjistit, jak budou ty adresy vypadat. Pravděpodobně jinak.
Louka
Profil
jojo:
Adresa vypadá (maximálně zjednodušená a funkční) takto:
http://www.google.com/search?q=auto&start=10 - kde $start je po desítkách a $q zůstává - stačí pokaždé příčíst 10 a zavolat file_get_contents na tu adresu.
Keeehi
Profil
Jen bych upozornil, že to hedá v kontextu celého světového internetu. Pokud chceš vědět, jak se umístíš ve výsledcích českého internetu, bude tam ještě potřeba přidat lr=lang_cs
jojo
Profil *
Ano to je pravda. Zkusil jsem si jen z hlavy a pomocí vašich rad, jak by zmíněný skript mohl vypadat. Zatím jenom s výpisem na které stránce se nachází, konkrétní pozici ještě nevím jak zjistit.

$my_keyword="auto";
$my_url="http://www.auto.cz";

for($page = 0; $page <= 100; $i++){
	
	$html = file_get_content("http://www.google.com/search?q='$my_keyword'&start='page');

	$find_keyword = strpos($html, "auto");

	$find_url= strpos($html, "http://www.auto.cz");
	
	if($find_keyword==$my_keyword and $find_url==$my_url){
		echo "Hledané klíčové slovo se nachází na ".$page." stránce ve vyhledávači google";
	}
	else{
		$page=$page + 10;
	}
}
Stano
Profil *
$position = 1;
$results = explode("<li class=\"g w0 knavi\">",$html);//takto sú označované jednotlivé výsledky

foreach($results as $result){kontroluj tu;$position++};
Moderátor Joker: Kód opraven, žádost o opravu kódu vyhozena
jojo
Profil *
jestli to chápu správně tak teď v proměnné $results by mělo být polo, ve kterém bude jednotlové výsledky. Když, ale na tu proměnnou použiji funkci count tak mi to vždy vyhodí 0.

taky se už musím zaregistrovat ;-)

$my_keyword="auto";
$my_url="www.auto.cz";


for($page = 0; $page <= 100;$page=$page + 10){
	

	$html = file_get_contents("http://www.google.com/search?lr=lang_cs&q=".$my_keyword."&start=".$page);
	
	$results = explode("<li class=\"g w0 knavi\">",$html);
	
	$pocet = count($result);
	echo $pocet;
}	
jojo
Profil *
klasika, zapomněl jsem
$pocet = count($results);
. Nicméně teď to vypisuje zas samé jedničky.
ninja
Profil
1. Google vrací ve stejnou dobu různé výsledky, ovlivňujících fakturu je celá řada. Tedy žádná pevná pozice neexistuje.
2. Tímto automatickým dotazováním na server Googlu porušujete autorský zákon, konrétně neoprávněně vytěžujete cizí databázi.
3. Porušujete smluvní podmínky služby Google vyhledávání.
4. Google Vás automaticky po nějaké době odřízne, respektive bude požadovat projití Turingovým testem (captcha).
Stano
Profil
bol tam problém stým že file_get_contents ziskava inakšie html ako sa zobrazuje potom na stránke. asi práca prehliadačov alebo čo. neviem. v explode malo byť

<li class=g>

a celé to vyzerá takto:

<?php
$my_keyword = "auto";
$my_url = "www.ford.com";
$position = 1;

for($i = 0; $i < 10; $i++){
  $page = 10 * $i;
  $html = file_get_contents("http://www.google.com/search?q=$my_keyword&start=$page"); 
  //file_put_contents("google.txt",$html);  
  //die();  
  $results = explode('<li class=g>',$html);
  //echo count($results); die();
  foreach($results as $result){
    $match = strpos($result, $my_url);
    if($match !== FALSE){
      echo "nasiel som to na $position pozícií";
      die();}
    $position++;
    }
  }                     
?>


edit:
a je možné, že čo sú tie preferované odkazy platené na začiatku tak tie to ignoruje. ale neviem či to je na závadu.
jojo
Profil *
Tohle je fakt super. Jen když si tak porovnávám výsledky v googlu a přes tento skriptík tak mi to někde ustřeluje třeba. Zajímavý třeba je:

klíčové slovo je pořád: auto

Přes googlu:
web: www.autohorak.cz - v goolu je na 28
web: www.auto-stepanek.cz - v googlu na 29

Přes skriptík:
web: www.autohorak.cz - 32
web: www.auto-stepanek.cz - 34

Divný je, že i když ty weby jsou pod sebou 28,28, tak to přes skript uskočí najednou o 2 místa. Napadl mě, jesti třeba nemůže dělat problém to, že v tom $results je to uložené do více polí. Pokud byse ty jednotlivá pole sloučila do jednoho, možná by to hledání bylo přesnější. Ale nevím...
Stano
Profil
jojo:
lebo to vyhľadáva na anglickom či americkom googly. mám dojem že google nevie rozoznať z akej krajiny ide tento dopyt a tým pádom vyhľadáva na dákych defaultných nastaveniach. a tie výsledky budú trocha skreslené. metoda explode() nieje na toto úplne presná.

pri každej ďalšej stránke to pridá jednu pozíciu naviac. príklad:
text napríklad hlavička
<h1>prvy vysledok</h1>
<h1>druhy vysledok</h1>
<h1>treti vysledok</h1>


explode("<h1>", ); z toho vytvori pole:
array("text napríklad hlavička","prvy vysledok</h1>","druhy vysledok</h1>","treti vysledok</h1>");

takže prvý výsledok je až na pozícií dva. a táto chyba je na každej strane.
jojo
Profil *
Stačí když do toto řetězce přidáš lr=lang_cs pak to normálně vyhledává v českém googlu. O té chybě s tím přičítání jedné pozice vím, to jsem ošetřil, že proměnou position jsem nastavil na 0 (nevím jestli je to sprané řešení). Spíš mě zajímalo proč to u těch předchozích dvou stránek uskočí o 2 pozice, když jsou podsebou.
Stano
Profil
jojo:
vypíš si výsledky:
$html = file_get_contents("http://www.google.com/search?q=$my_keyword&start=$page"); 

a tam si odčítaj na ktorej pozícií máš výsledok. Keď som to ja skúšal, tak mi to vracalo úplne odlišné výsledky, ako keď som si to hľadal sám.

nastaviť position = 0 ti to úplne nerieši. daj si to späť na 1 a
for($i = 0; $i < 10; $i++){
$position--;

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: