|
Poslao: 06 Nov 2007 11:10
|
offline
- igor86

- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
Evo ga izraz samo obrati paznju da google mjenja js pa vise ne stoji "...rwt(this..." vec "...clk(this.href...", a moze bez toga tako da ti ovaj izraz izvlaci i to.
"/<h2 class=r><a href=\"(.*?)\" class=l+( onmousedown=\"return (.*?)\((.*?),'(.*?)','(.*?)','(.*?)','(.*?)','(.*?)'\)\")?>(.*?)<\/a><\/h2>/"
znaci
<?php
$url = "http://www.google.com/search?q=link:www.elitesecurity.org&hl=en&num=42";
$v = file_get_contents($url);
preg_match_all("/<h2 class=r><a href=\"(.*?)\" class=l+( onmousedown=\"return (.*?)\((.*?),'(.*?)','(.*?)','(.*?)','(.*?)','(.*?)'\)\")?>(.*?)<\/a><\/h2>/",$v,$r);
foreach($r[1] as $int => $link)
print "<a href='{$link}'>{$r[10][$int]}</a><br>";
?>
|
|
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 06 Nov 2007 14:43
|
offline
- ljuba973

- Novi MyCity građanin
- Pridružio: 05 Nov 2007
- Poruke: 21
- Gde živiš: Malta
|
Konacno sam nahvatao Linux/Perl/... administratora u firmi i ubi covek skript za 10 minuta
Evo resenje pa kome treba nek uzme. Sta mislite o resenju?
PS: Nemojte da odkomentarisete zakomentarisani red da vam ne rokne IE/FF
<?php
function getpage($url) {
$data = file_get_contents($url);
$nummatches = preg_match_all("/<h2 class=r><a href=\"([^\"]+)\" class=l>(.+?)<\/a><\/h2>.*?<font size=-1>(.+?)<br><span class=a>/i", $data, $matches);
$numresults = preg_match("/Results <b>([0-9]+)<\/b>.*?<b>([0-9]+)<\/b> of about <b>([0-9,]+)<\/b> linking to/i", $data, $resmatches);
echo "start: ".$resmatches[1]."\n<br/>";
echo "end: ".$resmatches[2]."\n<br/>";
echo "total number of results: ".$resmatches[3]."\n<br/>";
if (preg_match("/<a href=\"([^\"]+)\"><img src=\/intl\/en\/nav_next.gif width=100 height=26 alt=\"\" border=0><br>Next<\/a>/i", $data, $nextmatch)) {
echo "<br/>Next link: ".$nextmatch[1]."\n<br/><br/>";
}
echo "$nummatches matches\n\n<br/><br/>";
for ($i = 0; $i < $nummatches; $i++) {
echo "title: ".$matches[2][$i]."\n<br/>link: ".$matches[1][$i]."\n<br/>";
echo "descr: ".$matches[3][$i]."\n<br/>\n<br/>";
}
if (isset($nextmatch[1])) {
// getpage("http://www.google.com".$nextmatch[1]);
}
}
function searchdetails($site) {
$url = "http://www.google.com/search?q=link:$site&hl=en&num=42";
getpage($url);
}
searchdetails("www.elitesecurity.org");
?>
Dopuna: 06 Nov 2007 14:43
Hvala svima. Nadam se da ce ovaj topic koristiti i drugima
|
|
|
|
|
|
|
Poslao: 06 Nov 2007 17:26
|
offline
- Svemirko
- Legendarni građanin
- Pridružio: 24 Mar 2004
- Poruke: 3962
- Gde živiš: Zemun
|
probao sam ovaj program sa slike ali mi nesto ne ide....
trebali bi mi ovi divovi sa rezultatima...
[Link mogu videti samo ulogovani korisnici]
mogu li ih preko reg izvuci u promenljive
|
|
|
|
|
|
|
Poslao: 06 Nov 2007 21:39
|
offline
- Blood

- Ugledni građanin
- Pridružio: 26 Jul 2003
- Poruke: 384
- Gde živiš: Beograd
|
$url = "http://www.google.com/search?hl=en&q=a";
$v = file_get_contents($url);
preg_match_all('{<div class=g>(.*?)</div>}',$v,$r);
$i = 0;
while ($i < count($r[0])) {
$adresa1 = ($r[0][$i]) ? $r[0][$i] : '0';
echo $i+1 . ":<br>" . $adresa1 . "<br>\n";
$i++;
};
|
|
|
|
|
|
|
Poslao: 06 Nov 2007 22:10
|
offline
- Svemirko
- Legendarni građanin
- Pridružio: 24 Mar 2004
- Poruke: 3962
- Gde živiš: Zemun
|
@Blood
svaka cast i ziv bio
nego ovako imam samo jedan problem (moja greska sto nisam mozda napomenuo).
trebaju mi i linkovi koji su u
<div class=g style="margin-left:2.5em">
evo primer kako to i izgleda (fokusiran lik sadrzi style="margin-left:2.5em" u div tagu
ako ti nije preveliki cim da mi preradis ovo... znacilo bi mi.
tnx
Dopuna: 06 Nov 2007 22:10
p.s.
dodatni problem moze biti sto se taj
<div class=g style="margin-left:2.5em"> nalazi u okviru glavnog diva
<div class=g>
ne znam koliko je ovo izvodljivo sad
|
|
|
|
|
|
|
Poslao: 06 Nov 2007 23:42
|
offline
- Blood

- Ugledni građanin
- Pridružio: 26 Jul 2003
- Poruke: 384
- Gde živiš: Beograd
|
$url = "http://www.google.com/search?hl=en&q=a";
$v = file_get_contents($url);
preg_match_all('{<div class=g.*?>(.*?)</div>}',$v,$r);
$i = 0;
while ($i < count($r[0])) {
$adresa1 = ($r[0][$i]) ? $r[0][$i] : '0';
echo $i+1 . ":<br>" . $adresa1 . "<br>\n";
$i++;
};
|
|
|
|
|
|
|
Poslao: 06 Nov 2007 23:56
|
offline
- Svemirko
- Legendarni građanin
- Pridružio: 24 Mar 2004
- Poruke: 3962
- Gde živiš: Zemun
|
lol
a ja sam probao sa
preg_match_all('{<div class=g .*?>(.*?)</div>}',$v,$r);
jedina razlika je sto sam stavio space
hvala puno blood
|
|
|
|
|
|
|
|
|
Poslao: 08 Nov 2007 01:08
|
offline
- ljuba973

- Novi MyCity građanin
- Pridružio: 05 Nov 2007
- Poruke: 21
- Gde živiš: Malta
|
Imam 2 kratka pitanja:
Pitanje 1. Za sledeci kod:
<li id="li5" class="yscheven no1" onmouseover="javascript:liOver(this,5)" onmouseout="javascript:liOut(this,5)">
<a class="yschttl" href="http://rds.yahoo.com/blog/razno/countposts-v-10-wordpress-plugin/">CountPosts v 1.0 - WordPress Plugin - Ðukijev blog</a>
<address class="no1">
<span id="rslt1details5" class="ysrsltsdetails" style="position:inherit;display:none;"><span><a href='http://rds.yahoo.com/sitereg?.scrumb=0&crumb=&txtSiteUrl=http%3A%2F%2Fdjuki.padrino.rs%2Fblog%2Frazno%2Fcountposts-v-10-wordpress-plugin%2F&btnRegSite'>Authenticate
itd itd
Imam regularni izraz: (.*)\btxtSiteUrl=(.*)&
Koji mi vrati:
<span id="rslt1details5" class="ysrsltsdetails" style="position:inherit;display:none;"><span><a href='http://rds.yahoo.com/sitereg?.scrumb=0&crumb=&txtSiteUrl=http%3A%2F%2Fdjuki.padrino.rs%2Fblog%2Frazno%2Fcountposts-v-10-wordpress-plugin%2F&
Znaci nece da ovaj (.*) ode jos gore (a po meni bi trebalo da ode ) da bih osim linka uhvatio i onaj text COUNTPOST...
Probao sam nesto ovako:
">(.*)<\/a>(.*)\btxtSiteUrl=(.*)&
da bih uhvatio taj text ispred </a> pa onda 'bas me briga' pa txtSiteUrl= i onda da uhvatim link i na kraju da je & Ali nece da radi ... U cemu je greska? Kako da mu kazem da se ne osvrce na nove redove i ne stane na kraju tog reda?
Pitanje 2:
Napravio sam parser u PHP (nemojte se smejati jer je pocetnicko resenje ) koji iz pomenutog koda izvlaci te podatke:
$nummatches = preg_match_all("/<a class=\"yschttl\" href=\"[^\"]+\">(.*?)<\/a>([^\"]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=([^\=]+)=(.*?)&/i", $data, $matches);
I to lepo meni ispisuje parametar 1 i parametar 10 - tacno sto hocu. Znam da sam mogao da nestavljam te zagrade pa bih imao samo 2 parametra ali posto sam nesto poceo da kontam o RE tek juce - neka zagrada tu inace cu se pogubiti skroz.
Podpitanje 1: Da li ovaj RE radi sporije zbog te gomile parametara koje vracam? Da li bi radio brze da sam imao samo 2 parametra?
Podpitanje 2: U mom resenju imam 7 puta ([^\=]+)= ... Da li se to nekako moze skratiti i da mu dam {7} iza tog koda?
Hvala
Pozdrav
Ljuba
|
|
|
|
|
|
|
Poslao: 08 Nov 2007 01:29
|
offline
- Svemirko
- Legendarni građanin
- Pridružio: 24 Mar 2004
- Poruke: 3962
- Gde živiš: Zemun
|
ljuba973 ::
Podpitanje 1: Da li ovaj RE radi sporije zbog te gomile parametara koje vracam? Da li bi radio brze da sam imao samo 2 parametra?
mozes li da testiras ?
ja sam testirao i gledao razlike....
strpas to u for petlju da odradi jedno 20-ak puta (ili vise zavisi koliko je potrebno da se izvali razlika) i vidis koji ce brze da se zavrsi
|
|
|
|
|
|