Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Ładowanie konkretnej części strony
kaiba55
post
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Witam. Otóż chciałbym sobie zrobić narzędzie pobierające ile jaka strona ma podstron w google. Na razie wpadło mi do głowy jedynie ładowanie przez file get contens danej strony np.: http://www.google.pl/search?hl=&q=site...26bd2e1ea203435

Tylko tak. To ładuje mi całą stronę, a mnie by interesowało tylko sam wynik: 95,300

Czy z pomocą tej funkcji uda się osiągnąć zamierzony efekt, czy trzeba to zrobić inaczej?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
amii
post
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


No raczej trzeba to zrobić inaczej file_get_contents wczytuje ci stronę przekazaną jako argument i zwraca ciąg znaków będący treścią strony.

Możesz to zrobić tak (choć pewnie są lepsze sposoby), nie wiem czy zadziała bo pisane na szybko z palca

  1. $url = 'www.onet.pl'; //przykladowy url
  2. $znaki = file_get_contents('http://www.google.pl/search?hl=pl&source=hp&biw=1152&bih=670&q=site%3A'.$url); //pobieramy ciag znakow
  3. $pattern = '/<div id="resultStats">Około (.*) wyników/';
  4. preg_match($pattern, $znaki, $matches);
  5. echo $matches[0]; //tu powinien wyswietlic sie wynik
Go to the top of the page
+Quote Post
kaiba55
post
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


dzięki za gotowca, ale prosiłbym o w miare wyjaśnienie mi to, a konkretniej:

Kod
#
preg_match($pattern, $znaki, $matches);
Go to the top of the page
+Quote Post
amii
post
Post #4





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


To instrukcja wyszukująca w tekście $znaki wyrażenie regularne określone w $pattern wyniki dopasowań zwracane są w $matches, przy czym biorąc część wyrażenia w nawias właśnie tą część masz zwracaną.

Generalnie wszystko masz opisane w manualu i radzę go czytać bo to absolutna podstawa i bez tego daleko nie zajedziesz -> http://pl2.php.net/preg_match

Go to the top of the page
+Quote Post
kaiba55
post
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


zrobiłem sobie tak i mam gdzieś błąd, a ja nie moge znaleźć, niekierowałbyś mnie:

Kod
<?php

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8);
$pattern = 'Około (.*) wyników';
preg_match($pattern, $znaki, $matches);
echo $matches[0];  //tu powinien wyswietlic sie wynik

?>


Błąd jest jakiś podstawowy Parse error: syntax error, unexpected T_STRING a ja nie moge znaleźć dalej naprawy go...
Go to the top of the page
+Quote Post
amii
post
Post #6





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Nie masz domkniętego ciągu znaków tutaj:

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8');

Tu masz kolejny błąd, nie wiem czemu zmieniasz to na ciąg znaków to jest wyrażenie regularne, które musi być określone i sparsowane. Zrób tak jak dałem w przykładzie:
$pattern = 'Około (.*) wyników';

Ten post edytował amii 14.10.2010, 14:07:53
Go to the top of the page
+Quote Post
kaiba55
post
Post #7





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


teraz mam taki kod:

Kod
<?php

$znaki = file_get_contents('http://www.google.pl/search?hl=&q=site%3Ahaag.pl&sourceid=navclient-ff&rlz=1B3GGLL_plPL388PL388&ie=UTF-8');
$pattern = '/<div id="resultStats">Około (.*) wyników/';
preg_match($pattern, $znaki, $matches);
echo $matches[0];  //tu powinien wyswietlic sie wynik

?>


Ale coś nie działa: http://testy.blog4web.pl/index.php

Go to the top of the page
+Quote Post
amii
post
Post #8





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

Ostrzeżenie: (0%)
-----


Daj na samym początku pliku raportowanie błędów:
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

Spróbuj może dać: echo $matches[1];
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 03:53