![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 13.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym (częściowo jestem do tego zmuszony) zrobić na użytek własny parser ogłoszeń (głównie motoryzacyjnych). Interesowałby mnie np. te trzy serwisy: - otomoto, np.: http://otomoto.pl/renault-clio-rs-C26108070.html - gumtree, np.: http://warszawa.gumtree.pl/c-Samochody-Mot...QAdIdZ419403932 - moto.gratka, np: http://moto.gratka.pl/tresc/peugeot-3008-h...i-13697691.html Miałoby to działać na zasadzie 'schowka'. Wklejam na swojej stronie link do ogłoszenia, serwer na podstawie linku wybiera odpowiedni skrypt, parsuje treść (model, rocznik, przebieg itd.), zapisuje dane do bazy i wyświetla na stronie w formie tabelki. Szukam jak najprostszego rozwiązania (znam HTML/CSS, podstawy PHP i MySQLa). Czytałem o HTML DOM Parser - czy za jego pomocą dałoby się 'ściągnąć dane' z ww. serwisów? Patrzę na kod źródłowy otomoto i teoretycznie można znaleźć jakąś regułę (parametr w znaczniku <dt></dt>, a jego wartość w <span></span>). Pytanie jak to wygląda w praktyce? Nie mam w tej dziedzinie żadnego doświadczenia, dlatego prosiłbym Was o pomoc. Nie chodzi mi tutaj o gotowca, tylko o zasugerowanie jakiegoś narzędzia, dzięki któremu uda mi się osiągnąć opisany cel (w możliwie najprostszy sposó ![]() Pozdrawiam! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Kilka rzeczy:
Od strony PHP możesz wyciągnąć treść strony poprzez $content = file_get_content( 'url' ); Jeśli jedna potrzebujesz wysłać jakiś formularz to należy użyć cULR'a Parsujesz używając wyrażeń regularnych, żeby wyciągnąć coś z div'a o id="costam" to (pisze z palca wiec może nie zadziałać): /\<div\s.*id=\"costam\"[^\>]>(.*?)\<\/div\>/ A jeśli jednak chcesz na tym zarobić i to zrobić szybko to zleć to komuś. Wyrażenia regularne dla początkującego są na prawde trudne -------------------- ..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Nie radze parsować strony za pomocą wyrażeń regularnych, które szukaja <div id="content-x"></div>. Lepszym choć trudniejszym rozwiązaniem jest zaprzęgnięcie do tego DOM i szukanie w treści pomiędzy wybranymi znacznikami HTML odpowiedniego wzorca np. używając similar_text, strpos lub wyrażeń regularnych
Ten post edytował CuteOne 13.10.2012, 13:12:54 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
CuteOne czemu nie radzisz używać wyrażeń reg. ?
Ja od zawsze korzystam z wyrażeń, są elastyczne i zawsze dostaję to co chę. Wyjaśnij proszę -------------------- ..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 6 Dołączył: 22.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
(Subiektywnie) Najprościej będzie w Pythonie i BeautifulSoup
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@cudny: Żeby się nie powtarzać: http://stackoverflow.com/questions/1732348...-contained-tags
@bigevil: DOM + xPath |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 13.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedzi. Stronka miałaby być prywatna, jest to tylko dodatkowy szkolny projekt. Całość ograniczałaby się do 'wsparcia' maksymalnie 3-5 serwisów z ogłoszeniami. Jeśli bym się go podjął to na ukończneie mam jakieś półtora miesiąca. Tak jak pisałem wyżej, znam tylko podstawy PHP i jeżeli to zadanie wymagałoby zagłębienia się w jakieś bardzo zaawansowane techniki, to raczej sobie odpuszczę.
Nad Pythonem też myślałem. Tylko najpierw musiałbym opanować jakieś podstawy języka, nauczyć się jak obsługiwać takie skrypty na serwerze itd. Hmm... byłoby z tym dużo roboty? Spójrzcie na kody źródłowe ww. stron - którą z metod byłoby najłatwiej zastosować? Ten post edytował bigevil 13.10.2012, 17:57:16 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
najmniej problemów będziesz miał z DOM (oczywiście będziesz musiał go zrozumieć)... jeśli chciałbyś łatwo parsować strony nawet z treścią JS to najwygodniej skorzystać z QT (C++) gdzie jest też przeglądarka WebKit i także możesz korzystać z metod DOM'u, w QT możesz także pisać sporą część aplikacji w JS...
Podsumowując w PHP skorzystaj z DOM, dodatkowo masz biblioteki typu phpQuery wzorujące się na jQuery gdzie możesz odpytywać za pomocą selektorów CSS oraz inne... dodatkowo nie pamiętam ale chyba w ZF2 coś podobnego jest umożliwiającego łatwe przeszukiwanie drzewa DOM za pomocą selektorów CSS Ten post edytował zegarek84 13.10.2012, 18:45:04 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
@cudny: Żeby się nie powtarzać: http://stackoverflow.com/questions/1732348...-contained-tags @bigevil: DOM + xPath @Crozin, świetny post na StackOverflow, słowo daje, chętnie dał bym pomógł, ale nie mogę bo nie jestem właścicielem posta. Oczywiście nie depresjonował bym całkowicie tutaj wyrażeń, bo ładowanie doom'a do niewielkich ilości textu, jak można napisać w kilku dosłownie znakach zapytanie regularne ( w wielu wypadkach ) to chyba nie jest najwydajniejsze rozwiązanie (chodzi o wydajność programisty, nie samego skryptu ![]() Do tego często korzystałem z DOM'a swojego czasu i xpath tak samo jak i same wyrażenia regularne wcale nie jest taki łatwy. Do wielu rzeczy też należy się przyzwyczaić, więc @bigevil jeśli znasz tylko podstawy PHP i nie poruszasz się zbyt dobrze po drzewach DOM'a to chyba bym odpuścił mając tylko 1,5 miesiąca i oprócz tego życie prywatne ofkors ![]() -------------------- ..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat jak można napisać w kilku dosłownie znakach zapytanie regularne ( w wielu wypadkach ) to chyba nie jest najwydajniejsze rozwiązanie (chodzi o wydajność programisty, nie samego skryptu ). Właśnie dlatego warto DOM/phpQuery. Z prostej przyczyny - przyjdzie do głowy twórcom wprowadzić minimalną zmianę, to regexpy już leżą i trzeba pisać od nowa. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.05.2025 - 06:01 |