[PHP] Parsanje googlovih rezultatov
 
php.programer 29. sep 2011 12:42:21 Pridružen od:
20. sep 2011
347 objav
154 106 10
#1

Sem probal za hec sparsati googlove rezultate. Vendar se je kaj hitro ustavilo. IZvorna koda je zakodirana z javascriptom, kako se da to najlažje rešit, da dobiš čisti HTML? Hvala za pomoč.


všeč(0) ni všeč(0) spam(0)
 
schtr4jh 29. sep 2011 12:45:42 Pridružen od:
24. nov 2008
402 objav
322 33 4
#2

Bolje bi bilo, da poskusiš s tem.


všeč(1) ni všeč(0) spam(0)
 
php.programer 29. sep 2011 12:51:57 Pridružen od:
20. sep 2011
347 objav
154 106 10
#3

Free quota

Usage is free for all users, up to 100 queries per day.



zadeva je precej omejena, in sicer free varianta 100 querijev na dan.



predvsem za seo analizo ključnih besed in njihovih pozicij... je lahko 100 querijev hitro mimo... ali obstajajo kakšne alternative?


všeč(1) ni všeč(1) spam(0)
 
krifa 29. sep 2011 15:05:40 Pridružen od:
9. feb 2010
402 objav
401 54 6
#4

To je proti google TOS-u in je zato precej zaj...

Jaz "bi" tako naredil... v settingsih shraniš/nastaviš instant search na off in prikaz rezultatov na 100. potem pa parsaš rezultate searcha z enim regexom pa je. osebno bi me zanimalo, če je stran za določen kw pod 100 mestom, kar je več je itak brezveze.

Seveda bi za vse uporabljal level 1 proxye, ki niso public.

Rezultati api-ja pa baje niso čisto taki, kot so v searchu.


všeč(0) ni všeč(0) spam(0)
Prevajanje - prevajalska agencija pravo-prevajanje.si
Awesome jobs for awesome people: Dlabs jobs
 
kraji 29. sep 2011 16:04:46 Pridružen od:
22. jul 2009
853 objav
321 12 4
#5

Jaz sem si že kar dolgo nazaj za lastne potrebe napisal nek program, da grem za vse moje ključne besede avtomatsko po google iskalniku. Pri tem sparsam običajni html, ki ga dobim preko http get. Včasih je bilo dovolj, da sem dodal cca 2s pavze med poizvedbami in sem lahko izvedel vseh 2000 izvedb (2 strani po 100 zadetkov za 1000 ključnih besed) v enem šusu.



Nekje pol leta nazaj pa so to poostrili in so nekje po 120 zadetkih začeli vračati nek error rezultat in takšno error stanje traja cca 20 minut (na pamet rečeno), potem pa spet začne delovati. Začasno sem potem to rešil tako, da naredim samo 120 poizvedb in niti ne pridem do error stanja. Potem pa sam sprožim šele čez nekaj časa naslednjih 120 poizvedb, da počasi pridem do mojih 1000 besed, ki jih opazujem.



Je pa zanimivo, da takrat, ko ta avtomatski search neha delovati, lepo deluje ročno iskanje po googlu iz browserja. Nisem se še spravil, da bi točno videl kaj takrat primerjajo, ko ugotovijo, da gre za avtomatizem, ker očitno ni vezano na IP, ampak na določena polja v okviru http get zahtev, ker drugače ročno iskanje tudi ne bi delalo, če bi google začasno banal moj ip.


všeč(0) ni všeč(0) spam(0)
 
php.programer 29. sep 2011 17:28:45 Pridružen od:
20. sep 2011
347 objav
154 106 10
#6

problem se pojavi pri parsanju HTML kode, ki je zakodirana.



poglejte tukaj: http://www.shrani.si/f/J/Oo/3BqN3PGi/aa.png



kako rešiti takšno zadevo? Hvala za pomoč!


všeč(0) ni všeč(0) spam(0)
 
kraji 29. sep 2011 17:46:49 Pridružen od:
22. jul 2009
853 objav
321 12 4
#7

Jaz pozicije iščem takole:




  1. s http get zahtevo na google, kjer se doda parameter za ustrezno frazo, ki me zanima, dobim kompleten html


  2. Nato piščem v kodi: <h3 class="r">. To se nahaja pred vsakim zadetkom, se pravi domeno, npr. <h3 class="r"><a href="http://xyz"


  3. Po vrsti iščem te zgornje fraze toliko časa, da pridem do moje domene. S tem, ko vem kolikokrat sem najdel <h3 class="r">, vem tudi pozicijo, kje se nahaja moja domena.


  4. Vse te točke ponovim za vsako ključno besedo, ki jo imam v mysql že tako ali tako zaradi strani.




Zdaj, če je kakšen del strani "kodiran" me niti ne zanima, ker iščem samo to kar sem napisal in se v druge elemente strani ne poglabljam.



Vem pa da so cca pol leta nazaj nekaj spremenili in je ta <h3 class="r"> prej bil malo drugačen, kar je sicer takrat pomenilo, da mi ni nič najdlo, a to sem hitro popravil. ;)


všeč(0) ni všeč(0) spam(0)
 
jurij123 29. sep 2011 18:39:48 Pridružen od:
20. nov 2010
572 objav
675 148 10
#8

Uporabi Simple HTML DOM parser.



Jaz resim zadevo takole


$html = file_get_html('http://www.google.com/search?q='.urlencode($keyword));

$i=0;
foreach($html->find('a[class=l]') as $element)
{
$i++;
$link = $element->href;
}
všeč(1) ni všeč(0) spam(0)
 
kraji 29. sep 2011 18:43:36 Pridružen od:
22. jul 2009
853 objav
321 12 4
#9

Jaz sem v delphiju pisal, ker imam še druge stvari v okviru tega programa in sem za osnovo uporabil tisto, kar sem zgoraj pisal. Se pa strinjam, da je tako še veliko lepše.


všeč(0) ni všeč(0) spam(0)
 
FrEaKmAn 30. sep 2011 07:20:36 Pridružen od:
2. dec 2007
303 objav
175 59 0
#10

en frend je izvajal parsing JS strani, tako da je pognal instanco browserja (se mi zdi da je nucu chrome), kjer se je izvedla koda..nato pa je parsal tisto stran (html)...


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se