Autor | Zpráva | ||
---|---|---|---|
jojo Profil * |
#1 · Zasláno: 29. 4. 2011, 11:54:52
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 * |
#2 · Zasláno: 29. 4. 2011, 23:12:26
Co třeba Google webmaster tools?
|
||
jojo Profil * |
#3 · Zasláno: 30. 4. 2011, 09:32:15
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 * |
#4 · Zasláno: 30. 4. 2011, 09:48:59
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 * |
#5 · Zasláno: 30. 4. 2011, 10:02:05
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 |
#6 · Zasláno: 30. 4. 2011, 13:32:01 · Upravil/a: Keeehi
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"); A pak už v tom zdrojáku budete vyhledávat buď pomocí regulárních výrazů, nebo prohledávání DOMu. |
||
jojo Profil * |
#7 · Zasláno: 30. 4. 2011, 13:56:59
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 |
#8 · Zasláno: 30. 4. 2011, 14:10:45
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 |
#9 · Zasláno: 30. 4. 2011, 14:26:02
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 |
#10 · Zasláno: 30. 4. 2011, 14:35:52
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 * |
#11 · Zasláno: 30. 4. 2011, 15:05:15
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 * |
#13 · Zasláno: 30. 4. 2011, 19:49:35
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 * |
#14 · Zasláno: 30. 4. 2011, 19:51:27
klasika, zapomněl jsem
$pocet = count($results); |
||
ninja Profil |
#15 · Zasláno: 30. 4. 2011, 20:23:17
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 |
#16 · Zasláno: 30. 4. 2011, 20:44:08 · Upravil/a: Stano
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 * |
#17 · Zasláno: 30. 4. 2011, 22:21:15
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 |
#18 · Zasláno: 30. 4. 2011, 23:03:59
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 * |
#19 · Zasláno: 1. 5. 2011, 08:08:09
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 |
#20 · Zasláno: 1. 5. 2011, 08:58:05
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--; |
||
Časová prodleva: 13 let
|
0