Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyniki od Google
Forum PHP.pl > Forum > PHP
ayeo
Jak wyciagnac wyniki wyszukiwania od google. Chodzi mi o wyrazenie regularne do funkcji preg_match_all. Walcze z tym juz jakis czas, ale bezskutecznie. Google API nie wchodzi w gre....

Pojedynczy wynik wyglada tak:
  1. <div class="g"><!--m-->
  2. <h2 class="r">
  3. <a href="http://www.google.pl/" class="l"><b>Google</b></a>
  4. </h2>
  5. <table border="0" cellpadding="0" cellspacing="0">
  6. <tr>
  7. <td class="j">
  8. <font size="-1">Wyszukiwarka stron WWW <b>Google</b>.
  9. <br>
  10. <span class="a">www.<b>google</b>.pl/ - 4k - 6 Maj 2007 - </span>
  11. <nobr>
  12. <a class="fl" href="http://66.102.9.104">Kopia</a> -
  13. <a class="fl" href="/search?hl=pl&lr=&q=related:www.google.pl/">Podobne</a>
  14. </nobr>
  15. </font><!--n-->
  16. </td>
  17. </tr>
  18. </tbody>
  19. </table>
  20. </div>
babejsza
  1. <?php
  2. preg_match_all( '%(<div[^>]*>)(.*?</div>)%', $content, $matches );
  3. ?>


Powinno wyciągać Ci potrzebne dane jak i te, których nie chcesz (przy założeniu, że pobierasz zawartość całej strony wyników). Teraz będziesz musiał się tym jeszcze pobawić winksmiley.jpg.
ayeo
problem polega na tym, ze do wzoru pasuje wszystko pomiedzy pierwszym otwarciem diva, a ostatnim zamknieciem smile.gif
Kicok
  1. <?php
  2. $pattern = '/<div.*?>(.*?)</div>/si';


To powinno znaleźć wszystkie div'y. Jak chcesz coś dokładniejszego, to kombinuj z dodawaniem nowych tagów, albo atrybutów:
  1. <?php
  2. $pattern = '/<div.+?class="g".*?>(.*?)</div>/si';
Gdy znajdzie ci wszystkie divy, które chcesz żeby znalazło, a zarazem nie znajdzie ci żadnego diva, którego nie chcesz żeby znalazło - to znaczy że wyrażenie jest idealne ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.