![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Robię właśnie program który sczytuje pierwszą stronę z googla (tuż po wpisaniu interesującego nas hasła). Kod wygląda tak:
(Program zaczerpnięty z http://peb.pl/tworzenie-stron/353712-curl-na-google-2.html). To co program wyświetla to : Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) Podejrzewam ze błąd jest gdzieś w funkcji preg_match_all. Zależy mi tylko na linku z strony. Lecz niestety nie wiem gdzie ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
łatwiej i wydajniej będzie użyć DOMDocument
tu masz gotowca: http://www.phpro.org/examples/Get-Links-With-DOM.html |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Co prawda to co podałeś tehaha działa, lecz zwraca bardzo dużo śmieci. Nie jestem zadowolony z efektu. Chciałbym by zwrócone wiadomości były bez tych wszystkich śmieci.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Wiesz przede wszystkim nie napisałeś co dokładnie potrzebujesz wyciągnąć i w jakiej formie, myślałem, że chodzi Ci o pobranie linków z wynikami i po małych przeróbkach przykłady miałbyś taki efekt. Po drugie podany przykład to tylko przykład rozwiązania opartego o DOMDocument, w manualu masz całą specyfikację tej klasy i więc możesz to sobie dowolnie dostosować -> http://php.net/manual/en/class.domdocument.php, bo w wielu przypadkach takie manipulacje łatwiej i wydajniej jest zrobić bez wyrażeń regularnych.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
przyjrzałem się DOMDocument pomysł moze być dobry, to co chciałbym uzyskać to:
www.ceneo.pl/Laptopy www.sferis.pl/ pl.wikipedia.org/wiki/Laptop www.x-kom.pl/c/159-notebooki-netbooki-laptopy.html czyli linki z googla poukładane w kolejności. Myśle ze pomysł z DOMdocment jest dobry. Tylko muszę zastosować funkcje która wyczyści mi wyszukany tekst z śmieci. Obecny tekst który dostaje to:
Ubrałem w php by nie śmiecić linkami. Jakiś pomysł ? może getElementsByTagName ? Jednak bardziej skłonny jestem temu projektowi:
Tylko jest tu mały błąd w funkcji preg_match_all niestety nie wiem jaki. Próbowałem zmieniać (.*) na inne znaki co również nic nie dawało. Nie wiem również co ma oznaczać @ na początku komendy. Oto zdjęcie elementu którego poszukuje http://postimage.org/image/ystr4omif/ |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
jak trochę poszukasz w Google to znajdziesz wyrażenie regularne, które pobiera te wyniki, aczkolwiek zauważysz też, że sposób z wyrażeniami ma dość sporą wadę tutaj - jeżeli Google wprowadzi jakąś zmianę w kodzie to Twój sposób przestanie działać.
Zakładam, że to co Ciebie interesuje to odnośniki znajdujące się wewnątrz <h3>, jak widać kilka prostych linijek w oparciu o DomDocument załatwia sprawę:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 8.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście to co podałeś to działa lecz zwraca pełen link:
[/url?q=http://www.allegro.pl/item1095973044_t_torba_15_4_15_6_16_laptop_pokrowiec.html&sa=U&ei=92OtT76VG-XT4QSeuPifDA&ved=0CBIQFjAA&usg=AFQjCNGoxC2WeJwBl9IElbaD93LWYlw2RA] => T TORBA 15,4 15,6" 16 Chociaż link zaczyna się od www a kończy przed znakami "&sa=U" chciałbym dostać gotowy link w tym wypatku: www.allegro.pl/item1095973044_t_torba_15_4_15_6_16_laptop_pokrowiec.htm myślę o ponownym zastosowaniu getElementsByTagName. od razu mówię ze funkcja strstr nie działa ![]() strstr() expects parameter 1 to be string, array given Myśle ze to po prostu zmienna nie jest typu string (nie pytajcie mnie jak to możliwe). Więc zastosowałem pewien trick:
gdy tak robię dostaje w odpowiedzi pustą wiadomość. dokładny kod wygląda tak:
Nie mam pojęcia dlaczego program tak reaguje, próbowałem również przypisywać $ret innej zmienna ale zawsze jest tak samo proszę o pomoc. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
@pawelk3k Forum to jest miejsce gdzie się ludziom pomaga, a nie odwala za nich całą robotę. To co teraz wypisałeś pokazuje, że nie zapoznałeś się z podstawami php. A bez podstaw to praktycznie gotowy kod nic Ci nie daje i nawet gdybym Ci napisał dokładnie co trzeba przerobić to i tak byś nie wiedział jak to zrobić. Swoją drogą to aż godne podziwu ile błędów można zrobić doklejając zaledwie 2 linijki.
Tu masz gotowy skrypt, który pobiera wyniki z Google za pomocą googleApi: http://thetechnofreak.com/technofreak/goog...ch-results-php/, jeżeli dla zmiennej $pages przypiszesz wartość 1, a dla zmiennej $query szukaną frazę to otrzymasz tablicę(poczytaj o tym co to są tablice i jak je używać) z pierwszą stroną wyników wyszukiwania dla podanej frazy. Ale niestety bez podstaw i ten skrypt może okazać się mało użyteczny, musisz zapoznać się z takimi pojeciami jak: typy zmiennych, tablica, operacje na tablicy, pętle, funkcje, curl. Pamiętaj też, że każdą funkcję php możesz sprawdzić w manualu i tak też powinieneś zrobić - linijka po linijce dowiedzieć się jak skrypt działa. Masz tam dokładny opis tego co robi dana funkcja, jakie przyjmuje parametry, co zwraca, przykłady użycia oraz często wiele cennych informacji w kometarzach. Manual: http://www.php.net/ |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 14:43 |