• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie zawartości innej strony w celu wyciągnięcia konkretnych danych

42 Warsaw Coding Academy
0 głosów
1,684 wizyt
pytanie zadane 18 marca 2018 w PHP przez kevin Mądrala (5,010 p.)

Witam!

Zakładam ten wątek ponieważ nie jestem pewny czy prawidłowo podchodzę do problemu, zakładając ze mam serwis A na którym wyświetlają się pewne aukcje i chcę używając PHP i Symfony pobrać nazwy tych aukcji, zdjęcie oraz częściowy opis. Serwis w sam w sobie nie udostępnia żadnego API, do tego parametry opcji wyszukiwania są przesyłano jako GET. Chwile się nad tym zastanawiając przychodzi mi do głowy aby napisać swój paraser do tego ( nie wiem czy Symfony udostępnia mi taki komponent) pobranie strony z przesłanymi argumentami na pomocą $data = file_get_contents("abcd.com?param1=".$param1); i wyszukiwanie odpowiednich treści czyli: dane są w tabelce więc wyszukuje sobie konkretną tabelkę $table_start = strpos($data, '<table id="szukana_tabelka"'> Struktura tabelki w HTML jest stała więc konkretnych elementów wyszukuję podobnie np. opis elementu:

<?php
$el_name_start_pos = strpos($data, '<a title="', $table_start) + strlen('<a title="');
$el_name_ed_pos = strpos($data, '"', $el_name_start_pos);
$name = substr($data, $el_name_start_pos, $el_name_ed_pos - $el_name_start_pos);
?>

Powyższe, bardziej dopracowane instrukcje umieścić w pętli. Czy takim kierunkiem powinienem iść ?

Jeżeli serwis wymaga zalogowania abym zobaczył treść którą chcę pobrać to muszę POSTEM wysłać dane logowania, jeżeli korzysta z mechanizmu SESJI to mogę spokojnie pobierać jeżeli nie to muszę odbierać dane które mi zwróci i co z nimi zrobić ? Bądź przy każdym pobraniu zwartości innej strony zawsze się logować i serwer mi zwróci stronę po zalogowaniu

3 odpowiedzi

+1 głos
odpowiedź 18 marca 2018 przez Ehlert Ekspert (215,010 p.)
komentarz 18 marca 2018 przez kevin Mądrala (5,010 p.)
DOMCrawler to tylko sam paraser i tym nie obsłużę sesji logowania, a BrowserKit to taki klient bez parasera ? I dokładniej mówiąc potrzebuje jednego i drugiego ?
0 głosów
odpowiedź 6 kwietnia 2018 przez kevin Mądrala (5,010 p.)

Dobra działa BrowserKit i DOMCrawler, tylko co jeżeli mam stronę napisaną za pomocą Angular'a ? Aby uzupełniło się drzewo DOM to muszą się wykonać skrypty Angulara czyli muszę wykonać kod JavaScript. Czy za pomocą BrowserKit'a jestem w stanie to zrobić ?

komentarz 6 kwietnia 2018 przez UltraSF Stary wyjadacz (11,740 p.)
Prasuje przed wykonanie kodu js ?
komentarz 12 kwietnia 2018 przez kevin Mądrala (5,010 p.)
Tak
komentarz 12 kwietnia 2018 przez UltraSF Stary wyjadacz (11,740 p.)
Za pewne jest opcja do opóźnienia prasowania :)
komentarz 13 kwietnia 2018 przez kevin Mądrala (5,010 p.)
Jesteś tego pewny ? Bo do jednej strony specjalnie kombinuje z czymś innym co wszystko utrudnia...  Temat na stacku https://stackoverflow.com/questions/49682532/downloading-the-content-of-a-page-stretched-in-angular-through-browserkit
0 głosów
odpowiedź 6 kwietnia 2018 przez kemyyyt Bywalec (2,580 p.)
Jeżeli strona ma elementy takie jak angular użyj  tego https://sites.google.com/a/chromium.org/chromedriver/home z tym
https://github.com/facebook/php-webdriver/wiki/ChromeDriver

P.S
Więksi od ciebie mieli ten problem ... jak to wziąc i sie nie narobić :D

Podobne pytania

0 głosów
2 odpowiedzi 798 wizyt
pytanie zadane 11 kwietnia 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
0 głosów
1 odpowiedź 358 wizyt
pytanie zadane 22 stycznia 2019 w PHP przez Kacperhehe Bywalec (2,930 p.)
0 głosów
0 odpowiedzi 762 wizyt
pytanie zadane 27 lipca 2021 w PHP przez mikey Użytkownik (820 p.)

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...