Skocz do zawartości

[preg_match_all] Jak pominąć wyniki map Google?


graft

Rekomendowane odpowiedzi

$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_REFERER, 'www.google.pl');
curl_setopt($curl, CURLOPT_URL, 'https://www.google.pl/search?hl=pl&q='.urlencode($keyword).'&num=100');
$google = curl_exec($curl);
curl_close($curl);

$regEx = '/<li class=g><h3 class=r><a href="(.*?)" class=l>/'; 
preg_match_all($regEx, $google, $results);

[...]

Znalazłem kiedyś taki skrypt. Ma on zliczyć pozycje strony na daną frazę. Wrzuciłem frazę regionalną i w momencie, gdy strona istnieje w "wynikach map" zlicza jako pozycję nr 1. Macie pomysł jak mapy pominąć?

PS. Ew. jeśli ktoś spotkał ciekawsze rozwiązanie php na sprawdzenie pozycji frazy.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

. Ma on zliczyć pozycje strony na daną frazę. Wrzuciłem frazę regionalną i w momencie, gdy strona istnieje w "wynikach map" zlicza jako pozycję nr 1
Jak nie bedzie mapy to co ?

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

To co piszesz jest niemożliwe bo preg_match masz tak skonfigurowany że parser wyłapuje tylko "<h3 class=r>" kiedy linki z mapy mają <h4 class=r>

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za zainteresowanie. Po sylwestrze "na bank" wkleiłem cały kod - tylko zastanawiam się gdzie ;)

A oto żywy przykład (wynikiem jest "1"):

<?php

$strona = 'kuchnieswiata.com.pl';
$fraza = 'sklep warszawa';

$keyword = (isset($_GET['keyword'])) ? $_GET['keyword'] : $fraza;
$website = (isset($_GET['website'])) ? $_GET['website'] : $strona;

$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_REFERER, 'www.google.pl');
curl_setopt($curl, CURLOPT_URL, 'https://www.google.pl/search?hl=pl&q='.urlencode($keyword).'&num=50');
$google = curl_exec($curl);
curl_close($curl);

$regEx = '/<li class=g><h3 class=r><a href="(.*?)" class=l>/'; 

$pos = '0';

preg_match_all($regEx, $google, $results);

$found = false;
for($i=0; isset($results[1][$i]);$i++) {
$temp = strip_tags($results[1][$i]);
if(strpos($temp, $website)!==false)
{
$pos = ($i+1);
$found = true;
break;
}
$pos = ($i+1);
if(!$found || $pos==0) { 
   $pos = 'brak';
}
}


echo $pos;	 

?>

Odnośnik do komentarza
Udostępnij na innych stronach

szukaj https://maps.google.com/favicon.ico w wynikach tam gdzie jest to znaczy ze jest mapka i nie zliczaj tego

alternatywna metodą było by zrezygnowanie z archaicznych metod z wykorzystaniem wyrażeń regularnych i zainteresowanie sie DOM i Xpath

Odnośnik do komentarza
Udostępnij na innych stronach

Irek mnie uprzedził :D

$regEx = '/<li class=g><h3 class=r><a href="([^"]*)" class=l>/';

dlaczego?

Użyłeś w regexp .*? co oznacza najkrótszy możliwy ciąg znaków więc pomiędzy <li class=g><h3 class=r><a href=" a " class=l> był wyszukiwany najkrótszy możliwy ciąg znaków :D Jak spojrzysz w źródło wyników i poszukasz <li class=g><h3 class=r><a href=" dowiesz się dokładnie dlaczego.

e:p

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności