Pagina 1 din 1

Problema data la interviu

Scris: Sâm Sep 19, 2009 3:14 pm
de Nicolae Florescu

Scris: Sâm Sep 19, 2009 7:09 pm
de olympia

Scris: Sâm Sep 19, 2009 7:22 pm
de Pirahna
1. Preiei pagina (cu file_get_contents, fopen sau curl, care iti e mai usor si accesibil) : http://www.google.ro/search?hl=ro&site=case&q=case

2. Vezi cum sunt aranjate elementele (in cazul google ai un <li class="g w0"> care marcheaza inceputul rezultatului).
Ai un <h3 class="r"> <a href="adresa site" class="l" onmousedown="blablabla"> titlu site </a></h3>
dupa care putin mai jos ai un
<div class="s"> descriere <br> (divul se termina ceva mai jos)

Deci practic ai de extras elementele respective.

3. Trebuie sa faci expresia regulata care sa extraga datele respective ... in cazul asta ar fi

preg_match_all("/<h3 class="r"><a href=\"(.*)\" (.*)>(.*)</a></h3>(.*)<div class=\"s\">(.*)<br>/",$variabila_in_care_tii_pagina_de_la_google,$array_final);

La asta ar trebui adaugati cativa parametri referitori la tipurile de caractere, cat de greedy sa fie, etc, dar in mare cam asta e.

Am pus cu bold sectiunile importante, anume link, titlu si descriere.

4. Adaugi valorile din $array_final in baza de date.

Scris: Mar Sep 22, 2009 3:40 pm
de Nicolae Florescu

Scris: Mar Sep 22, 2009 3:44 pm
de Pirahna
<a href mai avea dupa link chestii gen id, onclick, etc, am pus si acolo ca sa le ia pe toate intr-o variabila si sa gasesti finalul tagului ( > ).

Aparent are nevoie de /miU la sfarsit (multiline, case-insensitive, ungreedy), altfel se opreste la primul rezultat.

Uite scriptul complet:


<?php

// google script thingie

$variabila_in_care_tii_pagina_de_la_google = file_get_contents("http://www.google.ro/search?hl=ro&q=casa");
preg_match_all("/<h3 class=r><a href=\"(.*)\"(.*)>(.*)<\/a><\/h3><div class=\"s\">(.*)<br>/miU",$variabila_in_care_tii_pagina_de_la_google,$array_final);

//print_r($array_final); // array final

for($i=0;$i<count($array_final[0]);$i++)
{
$titlu_link[$i] = $array_final[3][$i];
$adresa_link[$i] = $array_final[1][$i];
$descriere_link[$i] = $array_final[4][$i];
}

print_r($titlu_link);
print_r($adresa_link);
print_r($descriere_link);

// haha !

?>

Scris: Mar Sep 22, 2009 3:59 pm
de olympia

Scris: Mar Sep 22, 2009 4:00 pm
de Pirahna

Scris: Mar Sep 22, 2009 4:06 pm
de Nicolae Florescu

Scris: Joi Oct 01, 2009 12:07 pm
de ktapet

Scris: Joi Oct 01, 2009 2:05 pm
de Pirahna